test: expand compaction retry coverage
This commit is contained in:
@@ -148,4 +148,80 @@ describe("subscribeEmbeddedPiSession", () => {
|
|||||||
await waitPromise;
|
await waitPromise;
|
||||||
expect(resolved).toBe(true);
|
expect(resolved).toBe(true);
|
||||||
});
|
});
|
||||||
|
|
||||||
|
it("resolves after compaction ends without retry", async () => {
|
||||||
|
const listeners: Array<(evt: any) => void> = [];
|
||||||
|
const session = {
|
||||||
|
subscribe: (listener: (evt: any) => void) => {
|
||||||
|
listeners.push(listener);
|
||||||
|
return () => {};
|
||||||
|
},
|
||||||
|
} as any;
|
||||||
|
|
||||||
|
const subscription = subscribeEmbeddedPiSession({
|
||||||
|
session,
|
||||||
|
runId: "run-2",
|
||||||
|
});
|
||||||
|
|
||||||
|
for (const listener of listeners) {
|
||||||
|
listener({ type: "auto_compaction_start" });
|
||||||
|
}
|
||||||
|
|
||||||
|
let resolved = false;
|
||||||
|
const waitPromise = subscription.waitForCompactionRetry().then(() => {
|
||||||
|
resolved = true;
|
||||||
|
});
|
||||||
|
|
||||||
|
await Promise.resolve();
|
||||||
|
expect(resolved).toBe(false);
|
||||||
|
|
||||||
|
for (const listener of listeners) {
|
||||||
|
listener({ type: "auto_compaction_end", willRetry: false });
|
||||||
|
}
|
||||||
|
|
||||||
|
await waitPromise;
|
||||||
|
expect(resolved).toBe(true);
|
||||||
|
});
|
||||||
|
|
||||||
|
it("waits for multiple compaction retries before resolving", async () => {
|
||||||
|
const listeners: Array<(evt: any) => void> = [];
|
||||||
|
const session = {
|
||||||
|
subscribe: (listener: (evt: any) => void) => {
|
||||||
|
listeners.push(listener);
|
||||||
|
return () => {};
|
||||||
|
},
|
||||||
|
} as any;
|
||||||
|
|
||||||
|
const subscription = subscribeEmbeddedPiSession({
|
||||||
|
session,
|
||||||
|
runId: "run-3",
|
||||||
|
});
|
||||||
|
|
||||||
|
for (const listener of listeners) {
|
||||||
|
listener({ type: "auto_compaction_end", willRetry: true });
|
||||||
|
listener({ type: "auto_compaction_end", willRetry: true });
|
||||||
|
}
|
||||||
|
|
||||||
|
let resolved = false;
|
||||||
|
const waitPromise = subscription.waitForCompactionRetry().then(() => {
|
||||||
|
resolved = true;
|
||||||
|
});
|
||||||
|
|
||||||
|
await Promise.resolve();
|
||||||
|
expect(resolved).toBe(false);
|
||||||
|
|
||||||
|
for (const listener of listeners) {
|
||||||
|
listener({ type: "agent_end" });
|
||||||
|
}
|
||||||
|
|
||||||
|
await Promise.resolve();
|
||||||
|
expect(resolved).toBe(false);
|
||||||
|
|
||||||
|
for (const listener of listeners) {
|
||||||
|
listener({ type: "agent_end" });
|
||||||
|
}
|
||||||
|
|
||||||
|
await waitPromise;
|
||||||
|
expect(resolved).toBe(true);
|
||||||
|
});
|
||||||
});
|
});
|
||||||
|
|||||||
Reference in New Issue
Block a user