idea195-genomeloom-verifiab.../tests/test_composer.py

30 lines
1.2 KiB
Python

from genomeloom.composer import can_compose, repair_hints
def test_can_compose_ok():
a = {"capabilities": ["net"], "resource_envelope": {"cpu": 1, "memory": 128}, "invariants": ["mode=readonly"]}
b = {"capabilities": ["storage"], "resource_envelope": {"cpu": 1, "memory": 128}, "invariants": ["mode=readonly"]}
ok, details = can_compose(a, b, target_budget={"cpu": 4, "memory": 512})
assert ok
assert details["cap_conflicts"] == []
def test_can_compose_cap_conflict():
a = {"capabilities": ["net"], "resource_envelope": {"cpu": 2}}
b = {"capabilities": ["net"], "resource_envelope": {"cpu": 2}}
ok, details = can_compose(a, b, target_budget={"cpu": 3})
assert not ok
assert "net" in details["cap_conflicts"]
hints = repair_hints(details)
assert any("capability" in h or "Remove" in h for h in hints)
def test_can_compose_budget_violation():
a = {"capabilities": ["a"], "resource_envelope": {"cpu": 2}}
b = {"capabilities": ["b"], "resource_envelope": {"cpu": 3}}
ok, details = can_compose(a, b, target_budget={"cpu": 4})
assert not ok
assert "cpu" in details["budget_violations"]
hints = repair_hints(details)
assert any("Reduce 'cpu'" in h for h in hints)