mirror of
https://github.com/paperclipai/paperclip.git
synced 2026-10-30 13:20:54 +01:00
test(server): verify retention resume at its retained deadline
Co-Authored-By: Paperclip <noreply@paperclip.ing>
This commit is contained in:
1 parent
2c09c264bb
commit
c46bcbf9ff
2 files changed
+17
-2
No files matched your search
@@ -50,3 +50,13 @@ then verifies the saved reply sends on resume without another producer.
|
||||
|
||||
All later shared-worker consumers inherit this repair through the stack. Their
|
||||
combined-tip checks and PR checks still need fresh verification after propagation.
|
||||
|
||||
## Retention resume assertion
|
||||
|
||||
The combined-tip consumer run exposed a retention test that called flush after
|
||||
resume and assumed a zero activity counter meant the retained retry had run. Its
|
||||
helper checks active work only; zero is now also the correct paused state. The
|
||||
owner test now advances the actual retained nextWakeAt, waits for row removal,
|
||||
and checks disarm. Before resume it also proves a stable idle snapshot through a
|
||||
minute of quiet. All 11 retention cases pass in /tmp/sleep24-drain-tests.log.
|
||||
No production scheduling deadline or dispatch behavior changed for this repair.
|
||||
@@ -151,8 +151,13 @@ const support = external ? { supported: true } : await getEmbeddedPostgresTestSu
|
||||
});
|
||||
it("keeps the first write during drain and runs it on resume", async () => {
|
||||
await start(); await flush(); enabled = false;
|
||||
const call = await admission(); await quiet(60_000); expect(await row(call.id)).toBeDefined();
|
||||
enabled = true; await flush(); expect(await row(call.id)).toBeUndefined(); await quiet();
|
||||
const call = await admission(); await flush();
|
||||
const drained = idleWorkSnapshot();
|
||||
await quiet(60_000); expect(idleWorkSnapshot()).toEqual(drained); expect(await row(call.id)).toBeDefined();
|
||||
const resumeAt = coordinator!.nextWakeAt(); expect(resumeAt).not.toBeNull();
|
||||
enabled = true; await vi.advanceTimersByTimeAsync(Math.max(0, resumeAt! - Date.now()));
|
||||
await vi.waitFor(async () => { await flush(); expect(await row(call.id)).toBeUndefined(); });
|
||||
expect(coordinator!.nextWakeAt()).toBeNull(); await quiet();
|
||||
});
|
||||
it("pages through more than one batch of history across companies", async () => {
|
||||
for (let i = 0; i < 104; i++) await admission();
|
||||
|
||||
Reference in new issue
Block a user