fix: close broker uncertainty audit gaps
This commit is contained in:
@@ -40,6 +40,7 @@ class ProgrammableBroker:
|
||||
)
|
||||
self.polls = 0
|
||||
self.balance = {"005930": 10}
|
||||
self.cancel_calls = 0
|
||||
|
||||
def name(self):
|
||||
return "stub"
|
||||
@@ -53,6 +54,7 @@ class ProgrammableBroker:
|
||||
return self.responder(side)
|
||||
|
||||
def cancel_order(self, broker_order_id, *, side, symbol, qty, venue="KRX"):
|
||||
self.cancel_calls += 1
|
||||
return CancelOutcome(CancelState.REQUESTED)
|
||||
|
||||
def get_balance(self):
|
||||
@@ -159,3 +161,20 @@ def test_stale_watchdog_disabled_by_default():
|
||||
repo._slots[sid] = replace(s, updated_at=datetime.now(tz=timezone.utc) - timedelta(seconds=9999))
|
||||
r = execution.run_once()
|
||||
assert r.stale_pending == 0 # disabled => never warns
|
||||
|
||||
|
||||
def test_operator_cancel_is_sent_once_across_repeat_and_restart():
|
||||
broker = ProgrammableBroker()
|
||||
repo, svc, intents, execution, _, _ = _wire(broker)
|
||||
sid = _buy_to_holding(intents, execution)
|
||||
intents.submit_sell(SellIntent(intent_id="s1", slot_id=sid))
|
||||
broker.responder = lambda side: FillStatus(state="accepted")
|
||||
execution.run_once()
|
||||
|
||||
assert execution.cancel_pending_slot(sid) == "ok"
|
||||
assert execution.cancel_pending_slot(sid) == "cancel_already_recorded"
|
||||
|
||||
restarted = ExecutionService(svc, repo, broker)
|
||||
assert restarted.cancel_pending_slot(sid) == "cancel_already_recorded"
|
||||
assert broker.cancel_calls == 1
|
||||
assert repo.fetch_slot(sid).cancel_state == CancelState.REQUESTED.value
|
||||
|
||||
Reference in New Issue
Block a user