omniff / tests /python /unit /test_config.py
stukenov's picture
Initial upload: OmniFF — FFmpeg for AI
88e3f4a verified
from pathlib import Path
import pytest
import yaml
from omniff.runtime.config import ExpertConfig, OmniFFConfig, RouterConfig
def test_load_config_from_yaml(tmp_path):
config_file = tmp_path / "omniff.yaml"
config_file.write_text("""
name: test-runtime
version: "0.1"
router:
type: keyword
path: ""
experts:
text_small:
name: text_small
model_type: causal_lm
path: models/llm_small
loading: hot
""")
config = OmniFFConfig.load(config_file)
assert config.name == "test-runtime"
assert config.version == "0.1"
assert config.router.router_type == "keyword"
assert "text_small" in config.experts
assert config.experts["text_small"].model_type == "causal_lm"
assert config.experts["text_small"].loading == "hot"
def test_config_missing_file():
with pytest.raises(FileNotFoundError):
OmniFFConfig.load(Path("/nonexistent/omniff.yaml"))
def test_config_expert_defaults(tmp_path):
config_file = tmp_path / "omniff.yaml"
config_file.write_text("""
name: minimal
version: "0.1"
router:
type: keyword
path: ""
experts: {}
""")
config = OmniFFConfig.load(config_file)
assert config.experts == {}
assert config.graph_templates_dir is None
def test_config_invalid_yaml(tmp_path):
config_file = tmp_path / "omniff.yaml"
config_file.write_text(": : : not valid yaml [[[")
with pytest.raises((yaml.YAMLError, ValueError)):
OmniFFConfig.load(config_file)
def test_config_missing_required_field(tmp_path):
config_file = tmp_path / "omniff.yaml"
config_file.write_text("""
version: "0.1"
router:
type: keyword
""")
with pytest.raises((KeyError, TypeError, Exception)):
OmniFFConfig.load(config_file)
def test_config_missing_router(tmp_path):
config_file = tmp_path / "omniff.yaml"
config_file.write_text("""
name: test
version: "0.1"
""")
with pytest.raises((KeyError, TypeError, Exception)):
OmniFFConfig.load(config_file)
def test_config_missing_expert_model_type(tmp_path):
config_file = tmp_path / "omniff.yaml"
config_file.write_text("""
name: test
version: "0.1"
router:
type: keyword
path: ""
experts:
bad_expert:
name: bad
path: models/bad
""")
with pytest.raises((KeyError, Exception)):
OmniFFConfig.load(config_file)
def test_expert_config_defaults():
expert = ExpertConfig(name="test", model_type="causal_lm", path="models/test")
assert expert.loading == "warm"
assert expert.quantization is None
assert expert.device is None
def test_router_config_defaults():
router = RouterConfig(router_type="keyword")
assert router.path == ""
def test_config_graph_templates_dir(tmp_path):
config_file = tmp_path / "omniff.yaml"
config_file.write_text("""
name: test
version: "0.1"
router:
type: keyword
path: ""
graph_templates_dir: /tmp/templates
experts: {}
""")
config = OmniFFConfig.load(config_file)
assert config.graph_templates_dir == "/tmp/templates"