History

Extract benchmark follow-up pass parsing into perf config

Cursor Agent committed 8 months ago

Commit 2afff241 parent 142ce0f3 files · +62 −12Browse files

Unified · Split

3 files
  1. apps/desktop/src/desktopPerfAutomation.ts +6 −11
  2. apps/desktop/src/perfConfig.test.ts +43 −1
  3. apps/desktop/src/perfConfig.ts +13 −0
apps/desktop/src/desktopPerfAutomation.ts+6−11
@@ -4,7 +4,7 @@ import os from "node:os"; · 3 unmodified lines
4import path from "node:path";4import path from "node:path";
5 5
6import { BrowserWindow, contentTracing, type WebContents } from "electron";6import { BrowserWindow, contentTracing, type WebContents } from "electron";
7import { shouldRunTerminalPerfInteractions } from "./perfConfig";7import { resolveBenchmarkFollowUpPassCount, shouldRunTerminalPerfInteractions } from "./perfConfig";
8 8
9const PERF_AUTOMATION_ENABLED = process.env.T3CODE_DESKTOP_PERF_AUTOMATION === "1";9const PERF_AUTOMATION_ENABLED = process.env.T3CODE_DESKTOP_PERF_AUTOMATION === "1";
10const PERF_TRACE_OUT_PATH = process.env.T3CODE_DESKTOP_PERF_TRACE_OUT?.trim() ?? "";10const PERF_TRACE_OUT_PATH = process.env.T3CODE_DESKTOP_PERF_TRACE_OUT?.trim() ?? "";
@@ -14,16 +14,11 @@ const RUN_TERMINAL_INTERACTIONS = shouldRunTerminalPerfInteractions({ · 3 unmodified lines
14 T3CODE_DESKTOP_PERF_RUN_TERMINAL: process.env.T3CODE_DESKTOP_PERF_RUN_TERMINAL,14 T3CODE_DESKTOP_PERF_RUN_TERMINAL: process.env.T3CODE_DESKTOP_PERF_RUN_TERMINAL,
15 CI: process.env.CI,15 CI: process.env.CI,
16});16});
17const BENCHMARK_FOLLOW_UP_PASS_COUNT = (() => {17const BENCHMARK_FOLLOW_UP_PASS_COUNT = resolveBenchmarkFollowUpPassCount({
18 const raw = process.env.T3CODE_DESKTOP_PERF_BENCHMARK_FOLLOW_UP_PASSES?.trim();18 T3CODE_DESKTOP_PERF_BENCHMARK_FOLLOW_UP_PASSES:
19 if (raw && raw.length > 0) {19 process.env.T3CODE_DESKTOP_PERF_BENCHMARK_FOLLOW_UP_PASSES,
20 const parsed = Number.parseInt(raw, 10);20 CI: process.env.CI,
21 if (Number.isFinite(parsed) && parsed >= 0) {21});
22 return parsed;
23 }
24 }
25 return process.env.CI === "true" ? 0 : 1;
26})();
27 22
28function delay(ms: number): Promise<void> {23function delay(ms: number): Promise<void> {
29 return new Promise((resolve) => setTimeout(resolve, ms));24 return new Promise((resolve) => setTimeout(resolve, ms));
apps/desktop/src/perfConfig.test.ts+43−1
@@ -1,6 +1,6 @@
1import { describe, expect, it } from "vitest";1import { describe, expect, it } from "vitest";
2 2
3import { shouldRunTerminalPerfInteractions } from "./perfConfig";3import { resolveBenchmarkFollowUpPassCount, shouldRunTerminalPerfInteractions } from "./perfConfig";
4 4
5describe("shouldRunTerminalPerfInteractions", () => {5describe("shouldRunTerminalPerfInteractions", () => {
6 it("defaults to enabled outside CI when env is unset", () => {6 it("defaults to enabled outside CI when env is unset", () => {
@@ -130,3 +130,45 @@ describe("shouldRunTerminalPerfInteractions", () => { · 123 unmodified lines
130 ).toBe(true);130 ).toBe(true);
131 });131 });
132});132});
133
134describe("resolveBenchmarkFollowUpPassCount", () => {
135 it("defaults to 1 outside CI", () => {
136 expect(resolveBenchmarkFollowUpPassCount({ CI: "false" })).toBe(1);
137 expect(resolveBenchmarkFollowUpPassCount({ CI: "0" })).toBe(1);
138 });
139
140 it("defaults to 0 in CI", () => {
141 expect(resolveBenchmarkFollowUpPassCount({ CI: "true" })).toBe(0);
142 expect(resolveBenchmarkFollowUpPassCount({ CI: "on" })).toBe(0);
143 });
144
145 it("accepts explicit non-negative integer overrides", () => {
146 expect(
147 resolveBenchmarkFollowUpPassCount({
148 T3CODE_DESKTOP_PERF_BENCHMARK_FOLLOW_UP_PASSES: "2",
149 CI: "true",
150 }),
151 ).toBe(2);
152 expect(
153 resolveBenchmarkFollowUpPassCount({
154 T3CODE_DESKTOP_PERF_BENCHMARK_FOLLOW_UP_PASSES: " 0 ",
155 CI: "false",
156 }),
157 ).toBe(0);
158 });
159
160 it("ignores malformed overrides and falls back to CI default", () => {
161 expect(
162 resolveBenchmarkFollowUpPassCount({
163 T3CODE_DESKTOP_PERF_BENCHMARK_FOLLOW_UP_PASSES: "1abc",
164 CI: "true",
165 }),
166 ).toBe(0);
167 expect(
168 resolveBenchmarkFollowUpPassCount({
169 T3CODE_DESKTOP_PERF_BENCHMARK_FOLLOW_UP_PASSES: "-1",
170 CI: "false",
171 }),
172 ).toBe(1);
173 });
174});
apps/desktop/src/perfConfig.ts+13−0
@@ -3,6 +3,11 @@ type PerfToggleEnv = { · 2 unmodified lines
3 CI?: string | undefined;3 CI?: string | undefined;
4};4};
5 5
6type PerfBenchmarkEnv = {
7 T3CODE_DESKTOP_PERF_BENCHMARK_FOLLOW_UP_PASSES?: string | undefined;
8 CI?: string | undefined;
9};
10
6const TRUE_VALUES = new Set(["1", "true", "yes", "on"]);11const TRUE_VALUES = new Set(["1", "true", "yes", "on"]);
7const FALSE_VALUES = new Set(["0", "false", "no", "off"]);12const FALSE_VALUES = new Set(["0", "false", "no", "off"]);
8 13
@@ -34,3 +39,11 @@ export function shouldRunTerminalPerfInteractions(env: PerfToggleEnv): boolean { · 25 unmodified lines
34 if (toggleOverride !== null) return toggleOverride;39 if (toggleOverride !== null) return toggleOverride;
35 return !isCiEnvironment(env.CI);40 return !isCiEnvironment(env.CI);
36}41}
42
43export function resolveBenchmarkFollowUpPassCount(env: PerfBenchmarkEnv): number {
44 const raw = env.T3CODE_DESKTOP_PERF_BENCHMARK_FOLLOW_UP_PASSES?.trim();
45 if (raw && /^\d+$/.test(raw)) {
46 return Number.parseInt(raw, 10);
47 }
48 return isCiEnvironment(env.CI) ? 0 : 1;
49}