Diagnostics: bound in-memory session state tracking

This commit is contained in:
Vignesh Natarajan
2026-02-14 17:29:58 -08:00
parent 0f53a3b9f3
commit cee9f64f1b
2 changed files with 89 additions and 0 deletions

View File

@@ -0,0 +1,36 @@
import { afterEach, beforeEach, describe, expect, it, vi } from "vitest";
import {
getDiagnosticSessionStateCountForTest,
logSessionStateChange,
resetDiagnosticStateForTest,
} from "./diagnostic.js";
describe("diagnostic session state pruning", () => {
beforeEach(() => {
vi.useFakeTimers();
resetDiagnosticStateForTest();
});
afterEach(() => {
resetDiagnosticStateForTest();
vi.useRealTimers();
});
it("evicts stale idle session states", () => {
logSessionStateChange({ sessionId: "stale-1", state: "idle" });
expect(getDiagnosticSessionStateCountForTest()).toBe(1);
vi.advanceTimersByTime(31 * 60 * 1000);
logSessionStateChange({ sessionId: "fresh-1", state: "idle" });
expect(getDiagnosticSessionStateCountForTest()).toBe(1);
});
it("caps tracked session states to a bounded max", () => {
for (let i = 0; i < 2105; i += 1) {
logSessionStateChange({ sessionId: `session-${i}`, state: "idle" });
}
expect(getDiagnosticSessionStateCountForTest()).toBe(2000);
});
});