47 lines
1.9 KiB
Python
47 lines
1.9 KiB
Python
from gravityweave.plan_delta import PlanDelta
|
|
from gravityweave.witness import generate_feasibility_witness
|
|
from gravityweave.validator import validate_witness, make_signed_verdict
|
|
|
|
|
|
def test_validate_witness_ok():
|
|
pd = PlanDelta(origin="node1")
|
|
pd.commitments.add({"type": "burn", "fuel": 5.0, "power": 1.0, "payload_bytes": 100})
|
|
w = generate_feasibility_witness(pd)
|
|
|
|
resources = {"available_fuel": 10.0, "available_power": 5.0, "max_payload_bytes": 200}
|
|
verdict, details = validate_witness(w, resources, fuel_margin=0.1, power_margin=0.1)
|
|
assert verdict == "OK"
|
|
assert "checks" in details
|
|
|
|
|
|
def test_validate_witness_needs_review():
|
|
pd = PlanDelta(origin="node2")
|
|
pd.commitments.add({"type": "burn", "fuel": 9.0, "power": 1.0})
|
|
w = generate_feasibility_witness(pd)
|
|
|
|
resources = {"available_fuel": 10.0, "available_power": 5.0, "max_payload_bytes": 0}
|
|
verdict, _ = validate_witness(w, resources, fuel_margin=0.2, power_margin=0.1)
|
|
assert verdict == "needs-review"
|
|
|
|
|
|
def test_validate_witness_unstable():
|
|
pd = PlanDelta(origin="node3")
|
|
pd.commitments.add({"type": "burn", "fuel": 11.0, "power": 1.0})
|
|
w = generate_feasibility_witness(pd)
|
|
|
|
resources = {"available_fuel": 10.0, "available_power": 5.0, "max_payload_bytes": 0}
|
|
verdict, _ = validate_witness(w, resources, fuel_margin=0.1, power_margin=0.1)
|
|
assert verdict == "unstable"
|
|
|
|
|
|
def test_make_signed_verdict():
|
|
pd = PlanDelta(origin="node4")
|
|
pd.commitments.add({"type": "burn", "fuel": 1.0, "power": 0.5})
|
|
w = generate_feasibility_witness(pd)
|
|
|
|
resources = {"available_fuel": 5.0, "available_power": 5.0, "max_payload_bytes": 0}
|
|
secret = b"testkey"
|
|
out = make_signed_verdict(w, resources, secret_key=secret)
|
|
assert out["verdict"] == "OK"
|
|
assert "signature" in out and isinstance(out["signature"], str) and len(out["signature"]) == 32
|