24 lines
808 B
Python
24 lines
808 B
Python
from idea199_replicasurety_economic_surety.schemas import ReplayBundle
|
|
from idea199_replicasurety_economic_surety.replay_verifier import canonical_hash, verify_bundle
|
|
|
|
|
|
def make_bundle(metrics, invariants):
|
|
monitors = [{"name": "m0", "invariants": invariants}]
|
|
payload = {"trace": [], "metrics": metrics, "monitors": monitors}
|
|
root = canonical_hash(payload)
|
|
b = ReplayBundle(bundle_id="t", trace=[], metrics=metrics, monitors=monitors, evidence_root=root)
|
|
return b
|
|
|
|
|
|
def test_verifier_no_breach():
|
|
b = make_bundle({"cpu": 0.2}, ["cpu < 0.8"])
|
|
breach, msg = verify_bundle(b)
|
|
assert breach is False
|
|
|
|
|
|
def test_verifier_breach():
|
|
b = make_bundle({"cpu": 0.9}, ["cpu < 0.8"])
|
|
breach, msg = verify_bundle(b)
|
|
assert breach is True
|
|
assert "invariant breached" in msg
|