From 47136536c898dcb3e0d69ffd9640d84164d103d6 Mon Sep 17 00:00:00 2001 From: Gustavo Madeira Santana Date: Mon, 30 Mar 2026 22:34:43 -0400 Subject: [PATCH] tests: use multi-sample CLI startup baselines --- docs/help/testing.md | 2 +- docs/reference/test.md | 6 +- package.json | 2 +- scripts/bench-cli-startup.ts | 2 + scripts/test-update-cli-startup-bench.mjs | 8 +- test/fixtures/cli-startup-bench.json | 663 ++++++++++++++++------ 6 files changed, 505 insertions(+), 178 deletions(-) diff --git a/docs/help/testing.md b/docs/help/testing.md index 231b6d05621..21ef02ce140 100644 --- a/docs/help/testing.md +++ b/docs/help/testing.md @@ -66,7 +66,7 @@ Think of the suites as “increasing realism” (and increasing flakiness/cost): - Shared unit, extension, channel, and gateway runs all stay on Vitest `forks`. - The wrapper keeps measured fork-isolated exceptions and heavy singleton lanes explicit in `test/fixtures/test-parallel.behavior.json`. - The wrapper peels the heaviest measured files into dedicated lanes instead of relying on a growing hand-maintained exclusion list. - - CLI startup benchmarking now has distinct saved outputs: `pnpm test:startup:bench:smoke` writes the targeted smoke artifact at `.artifacts/cli-startup-bench-smoke.json`, `pnpm test:startup:bench:save` writes the full-suite artifact at `.artifacts/cli-startup-bench-all.json`, and `pnpm test:startup:bench:update` refreshes the checked-in fixture at `test/fixtures/cli-startup-bench.json`. + - CLI startup benchmarking now has distinct saved outputs: `pnpm test:startup:bench:smoke` writes the targeted smoke artifact at `.artifacts/cli-startup-bench-smoke.json`, `pnpm test:startup:bench:save` writes the full-suite artifact at `.artifacts/cli-startup-bench-all.json` with `runs=5` and `warmup=1`, and `pnpm test:startup:bench:update` refreshes the checked-in fixture at `test/fixtures/cli-startup-bench.json` with `runs=5` and `warmup=1`. - For surface-only local runs, unit, extension, and channel shared lanes can overlap their isolated hotspots instead of waiting behind one serial prefix. - For multi-surface local runs, the wrapper keeps the shared surface phases ordered, but batches inside the same shared phase now fan out together, deferred isolated work can overlap the next shared phase, and spare `unit-fast` headroom now starts that deferred work earlier instead of leaving those slots idle. - Refresh the timing snapshots with `pnpm test:perf:update-timings` and `pnpm test:perf:update-timings:extensions` after major suite shape changes. diff --git a/docs/reference/test.md b/docs/reference/test.md index cb388070532..cc6ee565985 100644 --- a/docs/reference/test.md +++ b/docs/reference/test.md @@ -85,13 +85,13 @@ Presets: - `real`: `health`, `status`, `status --json`, `sessions`, `sessions --json`, `agents list --json`, `gateway status`, `gateway status --json`, `gateway health --json`, `config get gateway.port` - `all`: both presets -Output includes avg, p50, p95, min/max, exit-code/signal distribution, and max RSS summaries for each command. Optional `--cpu-prof-dir` / `--heap-prof-dir` writes V8 profiles per run so timing and profile capture use the same harness. +Output includes `sampleCount`, avg, p50, p95, min/max, exit-code/signal distribution, and max RSS summaries for each command. Optional `--cpu-prof-dir` / `--heap-prof-dir` writes V8 profiles per run so timing and profile capture use the same harness. Saved output conventions: - `pnpm test:startup:bench:smoke` writes the targeted smoke artifact at `.artifacts/cli-startup-bench-smoke.json` -- `pnpm test:startup:bench:save` writes the full-suite artifact at `.artifacts/cli-startup-bench-all.json` -- `pnpm test:startup:bench:update` refreshes the checked-in baseline fixture at `test/fixtures/cli-startup-bench.json` +- `pnpm test:startup:bench:save` writes the full-suite artifact at `.artifacts/cli-startup-bench-all.json` using `runs=5` and `warmup=1` +- `pnpm test:startup:bench:update` refreshes the checked-in baseline fixture at `test/fixtures/cli-startup-bench.json` using `runs=5` and `warmup=1` Checked-in fixture: diff --git a/package.json b/package.json index 92c19f902d3..482a19d73b7 100644 --- a/package.json +++ b/package.json @@ -1132,7 +1132,7 @@ "test:serial": "node scripts/test-parallel.mjs --profile serial", "test:startup:bench": "node --import tsx scripts/bench-cli-startup.ts", "test:startup:bench:check": "node scripts/test-cli-startup-bench-budget.mjs", - "test:startup:bench:save": "node --import tsx scripts/bench-cli-startup.ts --preset all --runs 1 --warmup 0 --output .artifacts/cli-startup-bench-all.json", + "test:startup:bench:save": "node --import tsx scripts/bench-cli-startup.ts --preset all --runs 5 --warmup 1 --output .artifacts/cli-startup-bench-all.json", "test:startup:bench:smoke": "node --import tsx scripts/bench-cli-startup.ts --preset real --case gatewayStatusJson --runs 1 --warmup 0 --output .artifacts/cli-startup-bench-smoke.json", "test:startup:bench:update": "node scripts/test-update-cli-startup-bench.mjs", "test:startup:memory": "node scripts/check-cli-startup-memory.mjs", diff --git a/scripts/bench-cli-startup.ts b/scripts/bench-cli-startup.ts index eeef51cfcb5..42ce5159806 100644 --- a/scripts/bench-cli-startup.ts +++ b/scripts/bench-cli-startup.ts @@ -26,6 +26,7 @@ type SummaryStats = { }; type CaseSummary = { + sampleCount: number; durationMs: SummaryStats; maxRssMb: SummaryStats | null; exitSummary: string; @@ -216,6 +217,7 @@ function summarizeSamples(samples: Sample[]): CaseSummary { .map((sample) => sample.maxRssMb) .filter((value): value is number => typeof value === "number" && Number.isFinite(value)); return { + sampleCount: samples.length, durationMs: durations, maxRssMb: rssValues.length > 0 ? summarizeNumbers(rssValues) : null, exitSummary: collectExitSummary(samples), diff --git a/scripts/test-update-cli-startup-bench.mjs b/scripts/test-update-cli-startup-bench.mjs index fc9175ab154..c8909bf9479 100644 --- a/scripts/test-update-cli-startup-bench.mjs +++ b/scripts/test-update-cli-startup-bench.mjs @@ -13,8 +13,8 @@ if (process.argv.slice(2).includes("--help")) { " --out Output path (default: test/fixtures/cli-startup-bench.json)", " --entry CLI entry to benchmark (default: openclaw.mjs)", " --preset startup | real | all (default: all)", - " --runs Measured runs per case (default: 1)", - " --warmup Warmup runs per case (default: 0)", + " --runs Measured runs per case (default: 5)", + " --warmup Warmup runs per case (default: 1)", " --timeout-ms Per-run timeout (default: 30000)", " --help Show this help text", "", @@ -31,8 +31,8 @@ const opts = parseFlagArgs( out: cliStartupBenchManifestPath, entry: "openclaw.mjs", preset: "all", - runs: 1, - warmup: 0, + runs: 5, + warmup: 1, timeoutMs: 30_000, }, [ diff --git a/test/fixtures/cli-startup-bench.json b/test/fixtures/cli-startup-bench.json index 2b0c12a1514..469d3ba2721 100644 --- a/test/fixtures/cli-startup-bench.json +++ b/test/fixtures/cli-startup-bench.json @@ -1,7 +1,7 @@ { "node": "v25.6.1", - "runs": 1, - "warmup": 0, + "runs": 5, + "warmup": 1, "timeoutMs": 30000, "cpuProfDir": null, "heapProfDir": null, @@ -14,28 +14,53 @@ "args": ["--version"], "samples": [ { - "ms": 104.257833, - "maxRssMb": 62.234375, + "ms": 96.717625, + "maxRssMb": 62.140625, + "exitCode": 0, + "signal": null + }, + { + "ms": 95.282458, + "maxRssMb": 63.609375, + "exitCode": 0, + "signal": null + }, + { + "ms": 98.361042, + "maxRssMb": 62.265625, + "exitCode": 0, + "signal": null + }, + { + "ms": 100.737375, + "maxRssMb": 62.65625, + "exitCode": 0, + "signal": null + }, + { + "ms": 98.220583, + "maxRssMb": 62.484375, "exitCode": 0, "signal": null } ], "summary": { + "sampleCount": 5, "durationMs": { - "avg": 104.257833, - "p50": 104.257833, - "p95": 104.257833, - "min": 104.257833, - "max": 104.257833 + "avg": 97.86381659999999, + "p50": 98.220583, + "p95": 100.737375, + "min": 95.282458, + "max": 100.737375 }, "maxRssMb": { - "avg": 62.234375, - "p50": 62.234375, - "p95": 62.234375, - "min": 62.234375, - "max": 62.234375 + "avg": 62.63125, + "p50": 62.484375, + "p95": 63.609375, + "min": 62.140625, + "max": 63.609375 }, - "exitSummary": "code:0x1" + "exitSummary": "code:0x5" } }, { @@ -44,28 +69,53 @@ "args": ["--help"], "samples": [ { - "ms": 54.998708, - "maxRssMb": 45.65625, + "ms": 51.178583, + "maxRssMb": 44.671875, + "exitCode": 0, + "signal": null + }, + { + "ms": 51.062334, + "maxRssMb": 44.578125, + "exitCode": 0, + "signal": null + }, + { + "ms": 51.028625, + "maxRssMb": 45.171875, + "exitCode": 0, + "signal": null + }, + { + "ms": 54.476708, + "maxRssMb": 45.578125, + "exitCode": 0, + "signal": null + }, + { + "ms": 57.570875, + "maxRssMb": 45.828125, "exitCode": 0, "signal": null } ], "summary": { + "sampleCount": 5, "durationMs": { - "avg": 54.998708, - "p50": 54.998708, - "p95": 54.998708, - "min": 54.998708, - "max": 54.998708 + "avg": 53.06342500000001, + "p50": 51.178583, + "p95": 57.570875, + "min": 51.028625, + "max": 57.570875 }, "maxRssMb": { - "avg": 45.65625, - "p50": 45.65625, - "p95": 45.65625, - "min": 45.65625, - "max": 45.65625 + "avg": 45.165625, + "p50": 45.171875, + "p95": 45.828125, + "min": 44.578125, + "max": 45.828125 }, - "exitSummary": "code:0x1" + "exitSummary": "code:0x5" } }, { @@ -74,28 +124,53 @@ "args": ["health"], "samples": [ { - "ms": 9588.71375, - "maxRssMb": 61.09375, + "ms": 9451.69, + "maxRssMb": 61.046875, + "exitCode": 0, + "signal": null + }, + { + "ms": 9327.157, + "maxRssMb": 61.484375, + "exitCode": 0, + "signal": null + }, + { + "ms": 9328.53775, + "maxRssMb": 61.5, + "exitCode": 0, + "signal": null + }, + { + "ms": 9377.894208, + "maxRssMb": 61.28125, + "exitCode": 0, + "signal": null + }, + { + "ms": 9362.753917, + "maxRssMb": 61.234375, "exitCode": 0, "signal": null } ], "summary": { + "sampleCount": 5, "durationMs": { - "avg": 9588.71375, - "p50": 9588.71375, - "p95": 9588.71375, - "min": 9588.71375, - "max": 9588.71375 + "avg": 9369.606575000002, + "p50": 9362.753917, + "p95": 9451.69, + "min": 9327.157, + "max": 9451.69 }, "maxRssMb": { - "avg": 61.09375, - "p50": 61.09375, - "p95": 61.09375, - "min": 61.09375, - "max": 61.09375 + "avg": 61.309375, + "p50": 61.28125, + "p95": 61.5, + "min": 61.046875, + "max": 61.5 }, - "exitSummary": "code:0x1" + "exitSummary": "code:0x5" } }, { @@ -104,28 +179,53 @@ "args": ["health", "--json"], "samples": [ { - "ms": 919.712041, + "ms": 893.690834, + "maxRssMb": 61.4375, + "exitCode": 0, + "signal": null + }, + { + "ms": 888.014083, + "maxRssMb": 60.640625, + "exitCode": 0, + "signal": null + }, + { + "ms": 876.364291, + "maxRssMb": 61.328125, + "exitCode": 0, + "signal": null + }, + { + "ms": 895.80775, + "maxRssMb": 60.984375, + "exitCode": 0, + "signal": null + }, + { + "ms": 892.019584, "maxRssMb": 61.296875, "exitCode": 0, "signal": null } ], "summary": { + "sampleCount": 5, "durationMs": { - "avg": 919.712041, - "p50": 919.712041, - "p95": 919.712041, - "min": 919.712041, - "max": 919.712041 + "avg": 889.1793083999999, + "p50": 892.019584, + "p95": 895.80775, + "min": 876.364291, + "max": 895.80775 }, "maxRssMb": { - "avg": 61.296875, + "avg": 61.1375, "p50": 61.296875, - "p95": 61.296875, - "min": 61.296875, - "max": 61.296875 + "p95": 61.4375, + "min": 60.640625, + "max": 61.4375 }, - "exitSummary": "code:0x1" + "exitSummary": "code:0x5" } }, { @@ -134,28 +234,53 @@ "args": ["status", "--json"], "samples": [ { - "ms": 10498.266167, - "maxRssMb": 61.28125, + "ms": 10240.30475, + "maxRssMb": 61.15625, + "exitCode": 0, + "signal": null + }, + { + "ms": 9992.483416, + "maxRssMb": 61.71875, + "exitCode": 0, + "signal": null + }, + { + "ms": 9871.820125, + "maxRssMb": 61.703125, + "exitCode": 0, + "signal": null + }, + { + "ms": 9989.689625, + "maxRssMb": 61.265625, + "exitCode": 0, + "signal": null + }, + { + "ms": 10314.48525, + "maxRssMb": 61.140625, "exitCode": 0, "signal": null } ], "summary": { + "sampleCount": 5, "durationMs": { - "avg": 10498.266167, - "p50": 10498.266167, - "p95": 10498.266167, - "min": 10498.266167, - "max": 10498.266167 + "avg": 10081.756633199999, + "p50": 9992.483416, + "p95": 10314.48525, + "min": 9871.820125, + "max": 10314.48525 }, "maxRssMb": { - "avg": 61.28125, - "p50": 61.28125, - "p95": 61.28125, - "min": 61.28125, - "max": 61.28125 + "avg": 61.396875, + "p50": 61.265625, + "p95": 61.71875, + "min": 61.140625, + "max": 61.71875 }, - "exitSummary": "code:0x1" + "exitSummary": "code:0x5" } }, { @@ -164,28 +289,53 @@ "args": ["status"], "samples": [ { - "ms": 14638.190375, - "maxRssMb": 61.421875, + "ms": 13175.219042, + "maxRssMb": 61.546875, + "exitCode": 0, + "signal": null + }, + { + "ms": 13352.02925, + "maxRssMb": 61.359375, + "exitCode": 0, + "signal": null + }, + { + "ms": 13328.865583, + "maxRssMb": 61.34375, + "exitCode": 0, + "signal": null + }, + { + "ms": 13178.18525, + "maxRssMb": 61.609375, + "exitCode": 0, + "signal": null + }, + { + "ms": 13336.7915, + "maxRssMb": 61.765625, "exitCode": 0, "signal": null } ], "summary": { + "sampleCount": 5, "durationMs": { - "avg": 14638.190375, - "p50": 14638.190375, - "p95": 14638.190375, - "min": 14638.190375, - "max": 14638.190375 + "avg": 13274.218125000003, + "p50": 13328.865583, + "p95": 13352.02925, + "min": 13175.219042, + "max": 13352.02925 }, "maxRssMb": { - "avg": 61.421875, - "p50": 61.421875, - "p95": 61.421875, - "min": 61.421875, - "max": 61.421875 + "avg": 61.525, + "p50": 61.546875, + "p95": 61.765625, + "min": 61.34375, + "max": 61.765625 }, - "exitSummary": "code:0x1" + "exitSummary": "code:0x5" } }, { @@ -194,28 +344,53 @@ "args": ["sessions"], "samples": [ { - "ms": 5588.652417, - "maxRssMb": 61.96875, + "ms": 7118.772542, + "maxRssMb": 61.109375, + "exitCode": 0, + "signal": null + }, + { + "ms": 6319.220166, + "maxRssMb": 61.515625, + "exitCode": 0, + "signal": null + }, + { + "ms": 8390.35675, + "maxRssMb": 62.046875, + "exitCode": 0, + "signal": null + }, + { + "ms": 6280.020209, + "maxRssMb": 61.21875, + "exitCode": 0, + "signal": null + }, + { + "ms": 5861.898708, + "maxRssMb": 61.578125, "exitCode": 0, "signal": null } ], "summary": { + "sampleCount": 5, "durationMs": { - "avg": 5588.652417, - "p50": 5588.652417, - "p95": 5588.652417, - "min": 5588.652417, - "max": 5588.652417 + "avg": 6794.053675, + "p50": 6319.220166, + "p95": 8390.35675, + "min": 5861.898708, + "max": 8390.35675 }, "maxRssMb": { - "avg": 61.96875, - "p50": 61.96875, - "p95": 61.96875, - "min": 61.96875, - "max": 61.96875 + "avg": 61.49375, + "p50": 61.515625, + "p95": 62.046875, + "min": 61.109375, + "max": 62.046875 }, - "exitSummary": "code:0x1" + "exitSummary": "code:0x5" } }, { @@ -224,28 +399,53 @@ "args": ["sessions", "--json"], "samples": [ { - "ms": 5412.4965, - "maxRssMb": 61.671875, + "ms": 7152.919625, + "maxRssMb": 62.625, + "exitCode": 0, + "signal": null + }, + { + "ms": 6019.41, + "maxRssMb": 61.40625, + "exitCode": 0, + "signal": null + }, + { + "ms": 6917.366666, + "maxRssMb": 61.890625, + "exitCode": 0, + "signal": null + }, + { + "ms": 5592.944167, + "maxRssMb": 61.34375, + "exitCode": 0, + "signal": null + }, + { + "ms": 5591.436042, + "maxRssMb": 61.65625, "exitCode": 0, "signal": null } ], "summary": { + "sampleCount": 5, "durationMs": { - "avg": 5412.4965, - "p50": 5412.4965, - "p95": 5412.4965, - "min": 5412.4965, - "max": 5412.4965 + "avg": 6254.8153, + "p50": 6019.41, + "p95": 7152.919625, + "min": 5591.436042, + "max": 7152.919625 }, "maxRssMb": { - "avg": 61.671875, - "p50": 61.671875, - "p95": 61.671875, - "min": 61.671875, - "max": 61.671875 + "avg": 61.784375, + "p50": 61.65625, + "p95": 62.625, + "min": 61.34375, + "max": 62.625 }, - "exitSummary": "code:0x1" + "exitSummary": "code:0x5" } }, { @@ -254,28 +454,53 @@ "args": ["agents", "list", "--json"], "samples": [ { - "ms": 972.918667, - "maxRssMb": 60.53125, + "ms": 974.9935, + "maxRssMb": 61.203125, + "exitCode": 0, + "signal": null + }, + { + "ms": 1011.803583, + "maxRssMb": 61.375, + "exitCode": 0, + "signal": null + }, + { + "ms": 1008.81175, + "maxRssMb": 61.65625, + "exitCode": 0, + "signal": null + }, + { + "ms": 968.630125, + "maxRssMb": 61.40625, + "exitCode": 0, + "signal": null + }, + { + "ms": 1000.931541, + "maxRssMb": 62.03125, "exitCode": 0, "signal": null } ], "summary": { + "sampleCount": 5, "durationMs": { - "avg": 972.918667, - "p50": 972.918667, - "p95": 972.918667, - "min": 972.918667, - "max": 972.918667 + "avg": 993.0340997999999, + "p50": 1000.931541, + "p95": 1011.803583, + "min": 968.630125, + "max": 1011.803583 }, "maxRssMb": { - "avg": 60.53125, - "p50": 60.53125, - "p95": 60.53125, - "min": 60.53125, - "max": 60.53125 + "avg": 61.534375, + "p50": 61.40625, + "p95": 62.03125, + "min": 61.203125, + "max": 62.03125 }, - "exitSummary": "code:0x1" + "exitSummary": "code:0x5" } }, { @@ -284,28 +509,53 @@ "args": ["gateway", "status"], "samples": [ { - "ms": 1120.672042, - "maxRssMb": 61.59375, + "ms": 1075.603667, + "maxRssMb": 61.1875, + "exitCode": 0, + "signal": null + }, + { + "ms": 1108.246417, + "maxRssMb": 61.15625, + "exitCode": 0, + "signal": null + }, + { + "ms": 1071.274458, + "maxRssMb": 61.0625, + "exitCode": 0, + "signal": null + }, + { + "ms": 1084.775291, + "maxRssMb": 61.46875, + "exitCode": 0, + "signal": null + }, + { + "ms": 1088.898833, + "maxRssMb": 61.53125, "exitCode": 0, "signal": null } ], "summary": { + "sampleCount": 5, "durationMs": { - "avg": 1120.672042, - "p50": 1120.672042, - "p95": 1120.672042, - "min": 1120.672042, - "max": 1120.672042 + "avg": 1085.7597332, + "p50": 1084.775291, + "p95": 1108.246417, + "min": 1071.274458, + "max": 1108.246417 }, "maxRssMb": { - "avg": 61.59375, - "p50": 61.59375, - "p95": 61.59375, - "min": 61.59375, - "max": 61.59375 + "avg": 61.28125, + "p50": 61.1875, + "p95": 61.53125, + "min": 61.0625, + "max": 61.53125 }, - "exitSummary": "code:0x1" + "exitSummary": "code:0x5" } }, { @@ -314,28 +564,53 @@ "args": ["gateway", "status", "--json"], "samples": [ { - "ms": 1181.198541, - "maxRssMb": 61.953125, + "ms": 1116.443292, + "maxRssMb": 61.5, + "exitCode": 0, + "signal": null + }, + { + "ms": 1076.623208, + "maxRssMb": 61.28125, + "exitCode": 0, + "signal": null + }, + { + "ms": 1059.811167, + "maxRssMb": 61.78125, + "exitCode": 0, + "signal": null + }, + { + "ms": 1091.463375, + "maxRssMb": 61.875, + "exitCode": 0, + "signal": null + }, + { + "ms": 1080.338709, + "maxRssMb": 61.0625, "exitCode": 0, "signal": null } ], "summary": { + "sampleCount": 5, "durationMs": { - "avg": 1181.198541, - "p50": 1181.198541, - "p95": 1181.198541, - "min": 1181.198541, - "max": 1181.198541 + "avg": 1084.9359502, + "p50": 1080.338709, + "p95": 1116.443292, + "min": 1059.811167, + "max": 1116.443292 }, "maxRssMb": { - "avg": 61.953125, - "p50": 61.953125, - "p95": 61.953125, - "min": 61.953125, - "max": 61.953125 + "avg": 61.5, + "p50": 61.5, + "p95": 61.875, + "min": 61.0625, + "max": 61.875 }, - "exitSummary": "code:0x1" + "exitSummary": "code:0x5" } }, { @@ -344,28 +619,53 @@ "args": ["gateway", "health", "--json"], "samples": [ { - "ms": 5285.964, - "maxRssMb": 60.484375, + "ms": 5477.276208, + "maxRssMb": 62.65625, + "exitCode": 0, + "signal": null + }, + { + "ms": 5507.074708, + "maxRssMb": 61.453125, + "exitCode": 0, + "signal": null + }, + { + "ms": 5496.467084, + "maxRssMb": 61.375, + "exitCode": 0, + "signal": null + }, + { + "ms": 5519.668917, + "maxRssMb": 61.703125, + "exitCode": 0, + "signal": null + }, + { + "ms": 5498.737875, + "maxRssMb": 62.015625, "exitCode": 0, "signal": null } ], "summary": { + "sampleCount": 5, "durationMs": { - "avg": 5285.964, - "p50": 5285.964, - "p95": 5285.964, - "min": 5285.964, - "max": 5285.964 + "avg": 5499.844958399999, + "p50": 5498.737875, + "p95": 5519.668917, + "min": 5477.276208, + "max": 5519.668917 }, "maxRssMb": { - "avg": 60.484375, - "p50": 60.484375, - "p95": 60.484375, - "min": 60.484375, - "max": 60.484375 + "avg": 61.840625, + "p50": 61.703125, + "p95": 62.65625, + "min": 61.375, + "max": 62.65625 }, - "exitSummary": "code:0x1" + "exitSummary": "code:0x5" } }, { @@ -374,28 +674,53 @@ "args": ["config", "get", "gateway.port"], "samples": [ { - "ms": 582.064875, - "maxRssMb": 61.09375, + "ms": 614.115833, + "maxRssMb": 61.375, + "exitCode": 0, + "signal": null + }, + { + "ms": 581.650375, + "maxRssMb": 61.59375, + "exitCode": 0, + "signal": null + }, + { + "ms": 590.865625, + "maxRssMb": 62.421875, + "exitCode": 0, + "signal": null + }, + { + "ms": 612.827458, + "maxRssMb": 61.1875, + "exitCode": 0, + "signal": null + }, + { + "ms": 605.788458, + "maxRssMb": 61.21875, "exitCode": 0, "signal": null } ], "summary": { + "sampleCount": 5, "durationMs": { - "avg": 582.064875, - "p50": 582.064875, - "p95": 582.064875, - "min": 582.064875, - "max": 582.064875 + "avg": 601.0495498, + "p50": 605.788458, + "p95": 614.115833, + "min": 581.650375, + "max": 614.115833 }, "maxRssMb": { - "avg": 61.09375, - "p50": 61.09375, - "p95": 61.09375, - "min": 61.09375, - "max": 61.09375 + "avg": 61.559375, + "p50": 61.375, + "p95": 62.421875, + "min": 61.1875, + "max": 62.421875 }, - "exitSummary": "code:0x1" + "exitSummary": "code:0x5" } } ]