Add runtime environment readiness checks

This commit is contained in:
2026-06-30 14:28:49 +08:00
parent 442b521705
commit d9ea249ff0
12 changed files with 603 additions and 18 deletions

View File

@@ -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"]