Address benchmark hardening review

This commit is contained in:
Chirag Aggarwal
2026-04-22 19:38:48 +05:30
parent c15e8d0126
commit 9a6a597710
2 changed files with 18 additions and 27 deletions
+4 -4
View File
@@ -684,7 +684,7 @@ jobs:
docker tag ${{ env.IMAGE }} ${{ env.IMAGE }}:after
- name: Setup k6
uses: grafana/setup-k6-action@v1
uses: grafana/setup-k6-action@ffe7d7290dfa715e48c2ccc924d068444c94bde2
with:
k6-version: ${{ env.K6_VERSION }}
@@ -723,7 +723,7 @@ jobs:
- name: Benchmark before
if: steps.benchmark_before_start.outcome == 'success'
continue-on-error: true
uses: grafana/run-k6-action@v1
uses: grafana/run-k6-action@a15e2072ede004e8d46141e33d7f7dad8ad08d9d
env:
APPWRITE_ENDPOINT: 'http://localhost/v1'
APPWRITE_BENCHMARK_ITERATIONS: '1'
@@ -775,13 +775,13 @@ jobs:
- name: Benchmark after
id: benchmark_after
continue-on-error: true
uses: grafana/run-k6-action@v1
uses: grafana/run-k6-action@a15e2072ede004e8d46141e33d7f7dad8ad08d9d
env:
APPWRITE_ENDPOINT: 'http://localhost/v1'
APPWRITE_BENCHMARK_ITERATIONS: '1'
APPWRITE_BENCHMARK_VUS: '1'
APPWRITE_WORKER_TIMEOUT_MS: '120000'
APPWRITE_BENCHMARK_PREVIOUS_SUMMARY_PATH: 'benchmark-before-summary.json'
APPWRITE_BENCHMARK_PREVIOUS_SUMMARY_PATH: '../../benchmark-before-summary.json'
APPWRITE_BENCHMARK_SUMMARY_PATH: 'benchmark-after-summary.json'
with:
path: tests/benchmarks/http.js
+14 -23
View File
@@ -20,8 +20,8 @@ const WORKER_TIMEOUT_MS = Number(__ENV.APPWRITE_WORKER_TIMEOUT_MS || 120000);
const ITERATIONS = Number(__ENV.APPWRITE_BENCHMARK_ITERATIONS || 1);
const VUS = Number(__ENV.APPWRITE_BENCHMARK_VUS || 1);
const SUMMARY_PATH = __ENV.APPWRITE_BENCHMARK_SUMMARY_PATH || '/tmp/appwrite-k6-summary.json';
const PREVIOUS_SUMMARY_PATH = __ENV.APPWRITE_BENCHMARK_PREVIOUS_SUMMARY_PATH || SUMMARY_PATH;
const PREVIOUS_SUMMARY = loadPreviousSummary();
const PREVIOUS_SUMMARY_PATH = __ENV.APPWRITE_BENCHMARK_PREVIOUS_SUMMARY_PATH || '';
const PREVIOUS_SUMMARY = PREVIOUS_SUMMARY_PATH ? loadPreviousSummary(PREVIOUS_SUMMARY_PATH) : null;
export const httpWaiting = new Trend('appwrite_http_waiting', true);
export const apiDuration = new Trend('appwrite_api_duration', true);
@@ -549,30 +549,21 @@ function summaryRow(data, label, metric, iterationsMetric = null, rpsMetric = nu
return `| ${label} | ${formatDetailValue(values.med)} | ${formatDetailValue(values['p(95)'])} | ${formatCount(iterations)} | ${formatRate(rps)} |`;
}
function loadPreviousSummary() {
const paths = [PREVIOUS_SUMMARY_PATH];
if (!PREVIOUS_SUMMARY_PATH.startsWith('/')) {
paths.push(`../../${PREVIOUS_SUMMARY_PATH}`);
function loadPreviousSummary(path) {
let contents;
try {
contents = open(path);
} catch (error) {
console.warn(`Missing benchmark summary at ${path}: ${error.message}`);
return null;
}
for (const path of paths) {
let contents;
try {
contents = open(path);
} catch (error) {
// Try the next path. k6 resolves open() relative to the script file.
continue;
}
try {
return JSON.parse(contents);
} catch (error) {
console.warn(`Invalid benchmark summary at ${path}: ${error.message}`);
return null;
}
try {
return JSON.parse(contents);
} catch (error) {
console.warn(`Invalid benchmark summary at ${path}: ${error.message}`);
return null;
}
return null;
}
function deltaTable(before, after) {