Bundle firecracker runtime and switch ollama demo to live logs
This commit is contained in:
parent
ef0ddeaa11
commit
65f7c0d262
26 changed files with 1896 additions and 408 deletions
73
tests/test_runtime.py
Normal file
73
tests/test_runtime.py
Normal file
|
|
@ -0,0 +1,73 @@
|
|||
from __future__ import annotations
|
||||
|
||||
import json
|
||||
from pathlib import Path
|
||||
|
||||
import pytest
|
||||
|
||||
from pyro_mcp.runtime import doctor_report, resolve_runtime_paths
|
||||
|
||||
|
||||
def test_resolve_runtime_paths_default_bundle() -> None:
|
||||
paths = resolve_runtime_paths()
|
||||
assert paths.firecracker_bin.exists()
|
||||
assert paths.jailer_bin.exists()
|
||||
assert (paths.artifacts_dir / "debian-git" / "vmlinux").exists()
|
||||
assert paths.manifest.get("platform") == "linux-x86_64"
|
||||
|
||||
|
||||
def test_resolve_runtime_paths_missing_manifest(
|
||||
monkeypatch: pytest.MonkeyPatch, tmp_path: Path
|
||||
) -> None:
|
||||
empty_root = tmp_path / "bundle"
|
||||
empty_root.mkdir(parents=True, exist_ok=True)
|
||||
monkeypatch.setenv("PYRO_RUNTIME_BUNDLE_DIR", str(empty_root))
|
||||
with pytest.raises(RuntimeError, match="manifest not found"):
|
||||
resolve_runtime_paths()
|
||||
|
||||
|
||||
def test_resolve_runtime_paths_checksum_mismatch(
|
||||
monkeypatch: pytest.MonkeyPatch, tmp_path: Path
|
||||
) -> None:
|
||||
source = resolve_runtime_paths()
|
||||
copied_bundle = tmp_path / "bundle"
|
||||
copied_platform = copied_bundle / "linux-x86_64"
|
||||
copied_platform.mkdir(parents=True, exist_ok=True)
|
||||
(copied_bundle / "NOTICE").write_text(
|
||||
source.notice_path.read_text(encoding="utf-8"), encoding="utf-8"
|
||||
)
|
||||
|
||||
manifest = json.loads(source.manifest_path.read_text(encoding="utf-8"))
|
||||
(copied_platform / "manifest.json").write_text(
|
||||
json.dumps(manifest, indent=2),
|
||||
encoding="utf-8",
|
||||
)
|
||||
firecracker_path = copied_platform / "bin" / "firecracker"
|
||||
firecracker_path.parent.mkdir(parents=True, exist_ok=True)
|
||||
firecracker_path.write_text("tampered\n", encoding="utf-8")
|
||||
(copied_platform / "bin" / "jailer").write_text(
|
||||
(source.jailer_bin).read_text(encoding="utf-8"),
|
||||
encoding="utf-8",
|
||||
)
|
||||
for profile in ("debian-base", "debian-git", "debian-build"):
|
||||
profile_dir = copied_platform / "profiles" / profile
|
||||
profile_dir.mkdir(parents=True, exist_ok=True)
|
||||
for filename in ("vmlinux", "rootfs.ext4"):
|
||||
source_file = source.artifacts_dir / profile / filename
|
||||
(profile_dir / filename).write_text(
|
||||
source_file.read_text(encoding="utf-8"), encoding="utf-8"
|
||||
)
|
||||
|
||||
monkeypatch.setenv("PYRO_RUNTIME_BUNDLE_DIR", str(copied_bundle))
|
||||
with pytest.raises(RuntimeError, match="checksum mismatch"):
|
||||
resolve_runtime_paths()
|
||||
|
||||
|
||||
def test_doctor_report_has_runtime_fields() -> None:
|
||||
report = doctor_report()
|
||||
assert "runtime_ok" in report
|
||||
assert "kvm" in report
|
||||
if report["runtime_ok"]:
|
||||
runtime = report.get("runtime")
|
||||
assert isinstance(runtime, dict)
|
||||
assert "firecracker_bin" in runtime
|
||||
Loading…
Add table
Add a link
Reference in a new issue