数据事件触发:去抖中的等待状态补一条断言(几次在等、窗口何时结束)

pending_for 给接口的 trigger_state:派给任务、还在去抖窗口里的条数和窗口结束的时刻。原来只在没有等待时断言过 due_at 为空,
这里在两条事件落进同一个窗口、还没到时刻时核对 waiting=2、due_at 是第一条发生之后 60 秒。

验证:后端全量 14467 通过(-n 8)。
This commit is contained in:
ThearchyHelios
2026-10-18 16:15:28 +08:00
parent 3f1eeff841
commit 35611beb7d
+3
View File
@@ -279,6 +279,9 @@ async def test_debounce_merges_events_in_the_window():
# 窗口还没过:只派、不发
assert await outbox.dispatch_due(t0 + timedelta(seconds=40)) == []
assert [d.status for d in await deliveries(sid)] == ["pending", "pending"]
async with SessionLocal() as session:
state = await outbox.pending_for(session, await session.get(Schedule, sid))
assert state == {"events": 0, "waiting": 2, "due_at": (t0 + timedelta(seconds=60)).isoformat()}
e3 = await put_event("workflow.finished", upstream, payload("run-3"), t0 + timedelta(seconds=70))
[fire] = await outbox.dispatch_due(t0 + timedelta(seconds=61))
assert fire.fire_at == t0 + timedelta(seconds=60) and fire.kind == "event"