28 lines
953 B
Python
28 lines
953 B
Python
from mercuriusmesh.adapters import ToyVenueAdapter
|
|
from mercuriusmesh.contracts import OrderEvent
|
|
from mercuriusmesh.simulator import DeterministicSimulator
|
|
|
|
|
|
def test_partitioned_orders_flush_after_reconnect():
|
|
sim = DeterministicSimulator(seed=7)
|
|
sim.add_adapter(ToyVenueAdapter("V1", initial_bid=100.0, initial_ask=100.5))
|
|
|
|
sim.set_link("V1", connected=False)
|
|
order = OrderEvent(order_id="queued-1", venue_id="V1", asset="TEST/USD", side="buy", price=None, size=3)
|
|
|
|
queued = sim.submit_order(order)
|
|
assert queued.status == "queued"
|
|
|
|
before = sim.compute_shared_signals()
|
|
sim.set_link("V1", connected=True, latency_ms=2)
|
|
assert queued.status == "accepted"
|
|
|
|
sim.advance(1)
|
|
mid = sim.compute_shared_signals()
|
|
assert mid.mid_price == before.mid_price
|
|
|
|
sim.advance(1)
|
|
after = sim.compute_shared_signals()
|
|
assert after.mid_price != before.mid_price
|
|
assert after.liquidity == before.liquidity
|