Files
cloudflare__vinext/benchmarks/perf/report-sample.mjs
Alexander Lichter 44b0c9dcff chore(perf): pair pull request benchmark baselines (#2159)
* fix(perf): pair pull request benchmark baselines

* fix(perf): bootstrap benchmark fingerprint rollout

* fix(perf): harden paired benchmark publishing

* fix(perf): allow isolated build output creation

* fix(perf): transfer isolated build outputs

* fix(perf): verify isolated output permissions

* fix(perf): validate diagnostic trace categories

* fix(perf): retain trusted benchmark manifests

* fix(perf): close benchmark validation gaps

---------

Co-authored-by: James <james@eli.cx>
2026-06-19 10:10:22 +01:00

37 lines
1.4 KiB
JavaScript

import { appendFile } from "node:fs/promises";
export async function reportPerformanceSample(value) {
if (!Number.isFinite(value))
throw new Error(`Performance sample must be finite, received ${value}`);
const sample = {
schemaVersion: 1,
benchmarkId: requiredEnvironment("VINEXT_PERF_BENCHMARK_ID"),
scenarioId: requiredEnvironment("VINEXT_PERF_SCENARIO_ID"),
suite: requiredEnvironment("VINEXT_PERF_SUITE"),
label: requiredEnvironment("VINEXT_PERF_LABEL"),
description: process.env.VINEXT_PERF_DESCRIPTION ?? "",
implementationId: requiredEnvironment("VINEXT_PERF_IMPLEMENTATION_ID"),
implementationLabel: requiredEnvironment("VINEXT_PERF_IMPLEMENTATION_LABEL"),
profile: process.env.VINEXT_PERF_PROFILE === "true",
unit: requiredEnvironment("VINEXT_PERF_UNIT"),
lowerIsBetter: process.env.VINEXT_PERF_LOWER_IS_BETTER !== "false",
revision: process.env.VINEXT_PERF_REVISION === "base" ? "base" : "head",
value,
measuredAt: new Date().toISOString(),
};
if (process.env.VINEXT_PERF_RECORD_SAMPLE !== "false") {
const samplesFile = requiredEnvironment("VINEXT_PERF_SAMPLES");
await appendFile(samplesFile, `${JSON.stringify(sample)}\n`);
}
console.log(JSON.stringify(sample));
return sample;
}
function requiredEnvironment(name) {
const value = process.env[name];
if (!value) throw new Error(`${name} is required; run the adapter through run-scenarios.mjs`);
return value;
}