From 83fcfa4d299018cb10355f1c7d21c70c63b3f889 Mon Sep 17 00:00:00 2001 From: Okiki Ojo Date: Wed, 11 Mar 2026 02:26:44 -0400 Subject: [PATCH] chore(session): add cold and warm drain functions for outline and events Signed-off-by: Okiki Ojo --- _test_utils/perf_fixtures.ts | 44 ++++++++++++++++++++++++++++++++++++ 1 file changed, 44 insertions(+) diff --git a/_test_utils/perf_fixtures.ts b/_test_utils/perf_fixtures.ts index 669bd64..f24663c 100644 --- a/_test_utils/perf_fixtures.ts +++ b/_test_utils/perf_fixtures.ts @@ -494,6 +494,14 @@ export function drainSessionLayeredWorkflowWarm(source: string): number { return outline_count + full_event_count + tree_child_count; } +export function drainSessionOutlineCold(source: string): number { + let count = 0; + for (const _event of createSession(source).outline()) { + count++; + } + return count; +} + export function drainSessionOutlineWarm(source: string): number { const session = createSession(source); Array.from(session.outline()); @@ -505,6 +513,14 @@ export function drainSessionOutlineWarm(source: string): number { return count; } +export function drainSessionEventsCold(source: string): number { + let count = 0; + for (const _event of createSession(source).events()) { + count++; + } + return count; +} + export function drainSessionEventsWarm(source: string): number { const session = createSession(source); Array.from(session.events()); @@ -516,8 +532,36 @@ export function drainSessionEventsWarm(source: string): number { return count; } +export function drainSessionParseCold(source: string): number { + return createSession(source).parse().children.length; +} + export function drainSessionParseWarm(source: string): number { const session = createSession(source); session.parse(); return session.parse().children.length; +} + +export function drainSessionParseWithDiagnosticsCold(source: string): number { + const result = createSession(source).parseWithDiagnostics(); + return result.tree.children.length + result.diagnostics.length; +} + +export function drainSessionParseWithDiagnosticsWarm(source: string): number { + const session = createSession(source); + session.parseWithDiagnostics(); + const result = session.parseWithDiagnostics(); + return result.tree.children.length + result.diagnostics.length; +} + +export function drainSessionParseWithRecoveryCold(source: string): number { + const result = createSession(source).parseWithRecovery(); + return result.tree.children.length + result.diagnostics.length + Number(result.recovered); +} + +export function drainSessionParseWithRecoveryWarm(source: string): number { + const session = createSession(source); + session.parseWithRecovery(); + const result = session.parseWithRecovery(); + return result.tree.children.length + result.diagnostics.length + Number(result.recovered); } \ No newline at end of file -- 2.51.2