From f381dca15baa1e31eadb271ee846fe658ba8a03e Mon Sep 17 00:00:00 2001 From: Vincent Koc Date: Thu, 18 Jun 2026 20:57:48 +0200 Subject: [PATCH] fix(e2e): reject loose docker stats CPU samples --- scripts/e2e/lib/docker-stats/assert-resource-ceiling.mjs | 7 ++++++- test/scripts/docker-stats-resource-ceiling.test.ts | 5 +++++ 2 files changed, 11 insertions(+), 1 deletion(-) diff --git a/scripts/e2e/lib/docker-stats/assert-resource-ceiling.mjs b/scripts/e2e/lib/docker-stats/assert-resource-ceiling.mjs index 1c02ccd1a66..3738da60130 100644 --- a/scripts/e2e/lib/docker-stats/assert-resource-ceiling.mjs +++ b/scripts/e2e/lib/docker-stats/assert-resource-ceiling.mjs @@ -57,7 +57,12 @@ function parseMemoryMiB(raw) { } function parseCpuPercent(raw) { - const parsed = Number(String(raw || "").replace(/%$/u, "")); + const text = String(raw ?? "").trim(); + const valueText = text.endsWith("%") ? text.slice(0, -1).trim() : text; + if (!NON_NEGATIVE_DECIMAL_PATTERN.test(valueText)) { + return undefined; + } + const parsed = Number(valueText); return Number.isFinite(parsed) ? parsed : undefined; } diff --git a/test/scripts/docker-stats-resource-ceiling.test.ts b/test/scripts/docker-stats-resource-ceiling.test.ts index c2d315e531d..87985074fbc 100644 --- a/test/scripts/docker-stats-resource-ceiling.test.ts +++ b/test/scripts/docker-stats-resource-ceiling.test.ts @@ -77,6 +77,11 @@ describe("scripts/e2e/lib/docker-stats/assert-resource-ceiling.mjs", () => { expect(malformed.status).not.toBe(0); expect(malformed.stderr).toContain("had invalid MemUsage"); + + const looseCpu = runAssert(writeStats('{"MemUsage":"128MiB / 2GiB","CPUPerc":"1e3%"}\n')); + + expect(looseCpu.status).not.toBe(0); + expect(looseCpu.stderr).toContain("had invalid CPUPerc"); }); it("reports and enforces parsed Docker resource peaks", () => {