Skip to content

Commit 7ee0050

Browse files
committed
test: harden deferred drain busy-session regression
1 parent fc4e2e2 commit 7ee0050

1 file changed

Lines changed: 20 additions & 1 deletion

File tree

test/engine.test.ts

Lines changed: 20 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -6142,6 +6142,7 @@ describe("LcmContextEngine fidelity and token budget", () => {
61426142
) => Promise<unknown>;
61436143
};
61446144
evaluateIncrementalCompaction: (params: unknown) => Promise<unknown>;
6145+
refreshBootstrapState: (params: unknown) => Promise<void>;
61456146
consumeDeferredCompactionDebt: (params: unknown) => Promise<unknown>;
61466147
};
61476148
vi.spyOn(privateEngine.compaction, "evaluateLeafTrigger").mockResolvedValue({
@@ -6247,8 +6248,20 @@ describe("LcmContextEngine fidelity and token budget", () => {
62476248
privateEngine,
62486249
"consumeDeferredCompactionDebt",
62496250
);
6251+
let releaseRefresh!: () => void;
6252+
let resolveRefreshStarted!: () => void;
6253+
const refreshStarted = new Promise<void>((resolve) => {
6254+
resolveRefreshStarted = resolve;
6255+
});
6256+
const refreshRelease = new Promise<void>((resolve) => {
6257+
releaseRefresh = resolve;
6258+
});
6259+
vi.spyOn(privateEngine, "refreshBootstrapState").mockImplementation(async () => {
6260+
resolveRefreshStarted();
6261+
await refreshRelease;
6262+
});
62506263

6251-
await engine.afterTurn({
6264+
const afterTurnPromise = engine.afterTurn({
62526265
sessionId,
62536266
sessionFile: createSessionFilePath("after-turn-background-busy-debt-durable"),
62546267
messages: [makeMessage({ role: "assistant", content: "fresh turn content" })],
@@ -6260,13 +6273,19 @@ describe("LcmContextEngine fidelity and token budget", () => {
62606273
},
62616274
});
62626275

6276+
await refreshStarted;
6277+
await flushImmediate();
6278+
expect(consumeDeferredCompactionDebtSpy).not.toHaveBeenCalled();
6279+
62636280
let releaseQueue!: () => void;
62646281
const heldQueue = privateEngine.withSessionQueue(sessionId, async () => {
62656282
await new Promise<void>((resolve) => {
62666283
releaseQueue = resolve;
62676284
});
62686285
});
62696286

6287+
releaseRefresh();
6288+
await afterTurnPromise;
62706289
await flushImmediate();
62716290

62726291
const conversation = await engine.getConversationStore().getConversationBySessionId(sessionId);

0 commit comments

Comments
 (0)