Add runtime environment readiness checks
This commit is contained in:
@@ -1,4 +1,5 @@
|
||||
from app.modules.system.service import parse_nvidia_smi_csv
|
||||
from app.modules.system import service
|
||||
from app.modules.system.service import get_runtime_readiness, parse_nvidia_smi_csv, parse_probe_stdout
|
||||
|
||||
|
||||
def test_parse_nvidia_smi_csv():
|
||||
@@ -16,3 +17,57 @@ def test_parse_nvidia_smi_csv():
|
||||
}
|
||||
]
|
||||
|
||||
|
||||
def test_parse_probe_stdout_uses_last_json_line():
|
||||
parsed = parse_probe_stdout(
|
||||
"warning before json\n"
|
||||
'{"checks":[{"module":"torch","passed":true,"version":"2.6.0"}],"extra":{"python":"3.11"}}\n'
|
||||
)
|
||||
|
||||
assert parsed["checks"][0]["module"] == "torch"
|
||||
assert parsed["extra"]["python"] == "3.11"
|
||||
|
||||
|
||||
def test_runtime_readiness_marks_missing_env(monkeypatch):
|
||||
monkeypatch.setattr(service, "_readiness_cache", None)
|
||||
monkeypatch.setattr(service, "get_conda_envs", lambda: {"available": True, "envs": []})
|
||||
|
||||
readiness = get_runtime_readiness(force=True)
|
||||
|
||||
assert readiness["passed"] is False
|
||||
assert all(not item["exists"] for item in readiness["envs"])
|
||||
|
||||
|
||||
def test_runtime_readiness_aggregates_probe_results(monkeypatch):
|
||||
monkeypatch.setattr(service, "_readiness_cache", None)
|
||||
specs = [
|
||||
{"role": "task", "name": "seg_smp", "label": "task", "env_file": "envs/seg_smp.yml", "required_imports": []},
|
||||
{"role": "mmseg", "name": "seg_mmcv", "label": "mmseg", "env_file": "envs/seg_mmcv.yml", "required_imports": []},
|
||||
]
|
||||
monkeypatch.setattr(service, "runtime_environment_specs", lambda: specs)
|
||||
monkeypatch.setattr(
|
||||
service,
|
||||
"get_conda_envs",
|
||||
lambda: {
|
||||
"available": True,
|
||||
"envs": [
|
||||
{"name": "seg_smp", "path": "/envs/seg_smp"},
|
||||
{"name": "seg_mmcv", "path": "/envs/seg_mmcv"},
|
||||
],
|
||||
},
|
||||
)
|
||||
monkeypatch.setattr(
|
||||
service,
|
||||
"inspect_conda_env",
|
||||
lambda name, imports: {
|
||||
"passed": True,
|
||||
"checks": [{"module": "torch", "passed": True}],
|
||||
"extra": {"python": "3.11"},
|
||||
},
|
||||
)
|
||||
|
||||
readiness = get_runtime_readiness(force=True)
|
||||
|
||||
assert readiness["passed"] is True
|
||||
assert readiness["envs"][0]["path"] == "/envs/seg_smp"
|
||||
assert readiness["specs"]["env_files"] == ["envs/seg_smp.yml", "envs/seg_mmcv.yml"]
|
||||
|
||||
Reference in New Issue
Block a user