test: avoid diagnostic count filter allocations

This commit is contained in:
Peter Steinberger
2026-05-08 21:50:46 +01:00
parent 84c4e66288
commit 6d785f01e8
2 changed files with 27 additions and 7 deletions

View File

@@ -29,6 +29,16 @@ import type { InputItem, ResponseCreateEvent } from "./openai-ws-types.js";
import { log } from "./pi-embedded-runner/logger.js";
import { SYSTEM_PROMPT_CACHE_BOUNDARY } from "./system-prompt-cache-boundary.js";
function countMatching<T>(items: readonly T[], predicate: (item: T) => boolean) {
let count = 0;
for (const item of items) {
if (predicate(item)) {
count += 1;
}
}
return count;
}
// ─────────────────────────────────────────────────────────────────────────────
// Mock OpenAIWebSocketManager
// ─────────────────────────────────────────────────────────────────────────────
@@ -2751,7 +2761,7 @@ describe("createOpenAIWebSocketStreamFn", () => {
expect(streamSimpleCalls.length).toBeGreaterThanOrEqual(1);
expect(manager.closeCallCount).toBeGreaterThanOrEqual(1);
expect(events.filter((event) => event.type === "start")).toHaveLength(1);
expect(countMatching(events, (event) => event.type === "start")).toBe(1);
expect(events.some((event) => event.type === "error")).toBe(false);
const doneEvent = events.find((event) => event.type === "done");
expect(doneEvent?.message?.content?.[0]?.text).toBe("http fallback response");
@@ -2785,7 +2795,7 @@ describe("createOpenAIWebSocketStreamFn", () => {
expect(streamSimpleCalls.length).toBeGreaterThanOrEqual(1);
expect(manager.closeCallCount).toBeGreaterThanOrEqual(1);
expect(events.filter((event) => event.type === "start")).toHaveLength(1);
expect(countMatching(events, (event) => event.type === "start")).toBe(1);
expect(events.some((event) => event.type === "error")).toBe(false);
const doneEvent = events.find((event) => event.type === "done");
expect(doneEvent?.message?.content?.[0]?.text).toBe("http fallback response");
@@ -2820,7 +2830,7 @@ describe("createOpenAIWebSocketStreamFn", () => {
expect(streamSimpleCalls).toHaveLength(0);
expect(firstManager.closeCallCount).toBeGreaterThanOrEqual(1);
expect(events.filter((event) => event.type === "start")).toHaveLength(1);
expect(countMatching(events, (event) => event.type === "start")).toBe(1);
const doneEvent = events.find((event) => event.type === "done");
expect(doneEvent?.message?.content?.[0]?.text).toBe("retry succeeded");
});

View File

@@ -52,6 +52,16 @@ function flushDiagnosticEvents() {
return new Promise<void>((resolve) => setImmediate(resolve));
}
function countMatching<T>(items: readonly T[], predicate: (item: T) => boolean) {
let count = 0;
for (const item of items) {
if (predicate(item)) {
count += 1;
}
}
return count;
}
describe("diagnostic session state pruning", () => {
beforeEach(() => {
vi.useFakeTimers();
@@ -691,7 +701,7 @@ describe("stuck session diagnostics threshold", () => {
markDiagnosticEmbeddedRunStarted({ sessionId: "s1", sessionKey: "main" });
vi.advanceTimersByTime(16_000);
expect(events.filter((event) => event.type === "session.long_running")).toHaveLength(1);
expect(countMatching(events, (event) => event.type === "session.long_running")).toBe(1);
vi.advanceTimersByTime(28_000);
emitDiagnosticEvent({
@@ -702,7 +712,7 @@ describe("stuck session diagnostics threshold", () => {
});
vi.advanceTimersByTime(2_000);
expect(events.filter((event) => event.type === "session.long_running")).toHaveLength(1);
expect(countMatching(events, (event) => event.type === "session.long_running")).toBe(1);
} finally {
unsubscribe();
}
@@ -1038,14 +1048,14 @@ describe("stuck session diagnostics threshold", () => {
vi.advanceTimersByTime(30_000);
vi.advanceTimersByTime(90_000);
expect(events.filter((event) => event === "diagnostic.liveness.warning")).toHaveLength(1);
expect(countMatching(events, (event) => event === "diagnostic.liveness.warning")).toBe(1);
vi.advanceTimersByTime(30_000);
} finally {
unsubscribe();
}
expect(events.filter((event) => event === "diagnostic.liveness.warning")).toHaveLength(2);
expect(countMatching(events, (event) => event === "diagnostic.liveness.warning")).toBe(2);
});
it("does not start the heartbeat when diagnostics are disabled by config", () => {