ariadne/tests/test_metis.py

63 lines
1.6 KiB
Python
Raw Normal View History

2026-03-31 14:07:02 -03:00
from __future__ import annotations
import json
from pathlib import Path
import types
from ariadne.services.metis import MetisService
def test_watch_sentinel_reads_snapshot_dir(monkeypatch, tmp_path) -> None:
monkeypatch.setattr(
"ariadne.services.metis.settings",
types.SimpleNamespace(
metis_sentinel_dir=str(tmp_path),
metis_sentinel_stale_after_sec=3600.0,
),
)
Path(tmp_path, "node-a.json").write_text(
json.dumps(
{
"hostname": "titan-13",
"kernel": "6.6.63",
"containerd": "1.7.23",
}
),
encoding="utf-8",
)
Path(tmp_path, "node-b.json").write_text(
json.dumps(
{
"hostname": "titan-19",
"kernel": "6.6.63",
"containerd": "1.7.23",
}
),
encoding="utf-8",
)
summary = MetisService().watch_sentinel()
assert summary.status == "ok"
assert summary.snapshots == 2
assert summary.hosts == 2
assert summary.hostnames == ["titan-13", "titan-19"]
assert summary.source == str(tmp_path)
def test_watch_sentinel_skips_when_unconfigured(monkeypatch) -> None:
monkeypatch.setattr(
"ariadne.services.metis.settings",
types.SimpleNamespace(
metis_sentinel_dir="",
metis_sentinel_stale_after_sec=3600.0,
),
)
summary = MetisService().watch_sentinel()
assert summary.status == "skipped"
assert summary.snapshots == 0
assert summary.hosts == 0