Showing the changes to scripts (1 of 1 file). Show all
Unified · Split
| @@ -70,6 +70,54 @@ function mb(bytes) { · 69 unmodified lines | |||
| 70 | return bytes / (1024 * 1024); | 70 | return bytes / (1024 * 1024); |
| 71 | } | 71 | } |
| 72 | 72 | ||
| 73 | function resolveNonNegativeNumberEnv({ name, value, fallback }) { | ||
| 74 | if (typeof value !== "string") { | ||
| 75 | return fallback; | ||
| 76 | } | ||
| 77 | const parsed = Number(value); | ||
| 78 | if (Number.isFinite(parsed) && parsed >= 0) { | ||
| 79 | return parsed; | ||
| 80 | } | ||
| 81 | console.warn( | ||
| 82 | `[desktop-perf] invalid ${name}="${value}" (expected non-negative number); using ${fallback}`, | ||
| 83 | ); | ||
| 84 | return fallback; | ||
| 85 | } | ||
| 86 | |||
| 87 | function resolveNonNegativeIntegerEnv({ name, value, fallback }) { | ||
| 88 | const parsed = resolveNonNegativeNumberEnv({ name, value, fallback }); | ||
| 89 | if (parsed === fallback) { | ||
| 90 | return fallback; | ||
| 91 | } | ||
| 92 | const normalized = Math.trunc(parsed); | ||
| 93 | if (normalized !== parsed) { | ||
| 94 | console.warn( | ||
| 95 | `[desktop-perf] non-integer ${name}="${value}" truncated to ${normalized} for consistency`, | ||
| 96 | ); | ||
| 97 | } | ||
| 98 | return normalized; | ||
| 99 | } | ||
| 100 | |||
| 101 | function resolvePositiveIntegerEnv({ name, value, fallback }) { | ||
| 102 | if (typeof value !== "string") { | ||
| 103 | return fallback; | ||
| 104 | } | ||
| 105 | const parsed = Number(value); | ||
| 106 | if (Number.isFinite(parsed) && parsed > 0) { | ||
| 107 | const normalized = Math.trunc(parsed); | ||
| 108 | if (normalized !== parsed) { | ||
| 109 | console.warn( | ||
| 110 | `[desktop-perf] non-integer ${name}="${value}" truncated to ${normalized} for consistency`, | ||
| 111 | ); | ||
| 112 | } | ||
| 113 | return normalized; | ||
| 114 | } | ||
| 115 | console.warn( | ||
| 116 | `[desktop-perf] invalid ${name}="${value}" (expected positive number); using ${fallback}`, | ||
| 117 | ); | ||
| 118 | return fallback; | ||
| 119 | } | ||
| 120 | |||
| 73 | function summarizeTrace(tracePath) { | 121 | function summarizeTrace(tracePath) { |
| 74 | const payload = JSON.parse(fs.readFileSync(tracePath, "utf8")); | 122 | const payload = JSON.parse(fs.readFileSync(tracePath, "utf8")); |
| 75 | const events = payload.traceEvents; | 123 | const events = payload.traceEvents; |
| @@ -616,10 +664,26 @@ async function main() { · 540 unmodified lines | |||
| 616 | } | 664 | } |
| 617 | prepareDesktopPerfState(stateDir, seedProjects ?? defaultPerfProjects); | 665 | prepareDesktopPerfState(stateDir, seedProjects ?? defaultPerfProjects); |
| 618 | 666 | ||
| 619 | const maxKeypressAvgMs = Number(process.env.T3CODE_PERF_MAX_KEYPRESS_AVG_MS ?? "12"); | 667 | const maxKeypressAvgMs = resolveNonNegativeNumberEnv({ |
| 620 | const maxKeypressMaxMs = Number(process.env.T3CODE_PERF_MAX_KEYPRESS_MAX_MS ?? "24"); | 668 | name: "T3CODE_PERF_MAX_KEYPRESS_AVG_MS", |
| 621 | const maxLongDispatchCount = Number(process.env.T3CODE_PERF_MAX_LONG_DISPATCH_COUNT ?? "0"); | 669 | value: process.env.T3CODE_PERF_MAX_KEYPRESS_AVG_MS, |
| 622 | const timeoutMs = Number(process.env.T3CODE_PERF_TIMEOUT_MS ?? "420000"); | 670 | fallback: 12, |
| 671 | }); | ||
| 672 | const maxKeypressMaxMs = resolveNonNegativeNumberEnv({ | ||
| 673 | name: "T3CODE_PERF_MAX_KEYPRESS_MAX_MS", | ||
| 674 | value: process.env.T3CODE_PERF_MAX_KEYPRESS_MAX_MS, | ||
| 675 | fallback: 24, | ||
| 676 | }); | ||
| 677 | const maxLongDispatchCount = resolveNonNegativeIntegerEnv({ | ||
| 678 | name: "T3CODE_PERF_MAX_LONG_DISPATCH_COUNT", | ||
| 679 | value: process.env.T3CODE_PERF_MAX_LONG_DISPATCH_COUNT, | ||
| 680 | fallback: 0, | ||
| 681 | }); | ||
| 682 | const timeoutMs = resolvePositiveIntegerEnv({ | ||
| 683 | name: "T3CODE_PERF_TIMEOUT_MS", | ||
| 684 | value: process.env.T3CODE_PERF_TIMEOUT_MS, | ||
| 685 | fallback: 420000, | ||
| 686 | }); | ||
| 623 | 687 | ||
| 624 | const child = spawn("bun", ["dev:desktop"], { | 688 | const child = spawn("bun", ["dev:desktop"], { |
| 625 | cwd: repoRoot, | 689 | cwd: repoRoot, |