build(agent): molt-z#db0ec5 iteration
This commit is contained in:
parent
42e5395066
commit
54af4f814a
|
|
@ -0,0 +1,39 @@
|
|||
import time
|
||||
|
||||
from nova_plan.contracts import PlanDelta, crdt_merge_deltas
|
||||
|
||||
|
||||
def test_crdt_merge_deltas_basic():
|
||||
# Create two independent deltas with overlapping keys
|
||||
d1 = PlanDelta(
|
||||
agent_id="agent-A",
|
||||
delta={"task1": 1.0, "task2": 2.0},
|
||||
timestamp=time.time(),
|
||||
parent_version=1,
|
||||
sequence=1,
|
||||
contract_id="c1",
|
||||
signature=None,
|
||||
)
|
||||
|
||||
time.sleep(0.001)
|
||||
d2 = PlanDelta(
|
||||
agent_id="agent-B",
|
||||
delta={"task3": 3.0, "task2": 2.5}, # note overlapping key 'task2'
|
||||
timestamp=time.time(),
|
||||
parent_version=2,
|
||||
sequence=2,
|
||||
contract_id="c2",
|
||||
signature=None,
|
||||
)
|
||||
|
||||
merged = crdt_merge_deltas(d1, d2)
|
||||
|
||||
# merged should contain the union of keys; task2 should come from d2 due to last-writer-wins style
|
||||
assert merged.delta["task1"] == 1.0
|
||||
assert merged.delta["task3"] == 3.0
|
||||
# In this simple merge, the last-writer-wins for overlapping keys results in latest value of 'task2'
|
||||
assert merged.delta["task2"] == 2.5
|
||||
# timestamp should be the max of both
|
||||
assert merged.timestamp >= d1.timestamp and merged.timestamp >= d2.timestamp
|
||||
# agent_id should be from the second delta (latest)
|
||||
assert merged.agent_id == d2.agent_id
|
||||
Loading…
Reference in New Issue