HH-415: preserve binary frame and resource sample semantics (#5)

This commit was merged in pull request #5.
This commit is contained in:
2026-08-21 15:07:04 +08:00
parent 8141969d46
commit 64f584d274
5 changed files with 192 additions and 89 deletions
+27
View File
@@ -1,5 +1,6 @@
import assert from "node:assert/strict";
import { randomUUID } from "node:crypto";
import { readFile } from "node:fs/promises";
import test from "node:test";
import {
@@ -60,6 +61,25 @@ test("WebSocket limits aggregate drops without payloads", () => {
assert.deepEqual(dropped.dropped.reasons, { rate_limit: 2, frame_size_limit: 1, event_limit: 1 });
assert.equal(dropped.dropped.count, 4);
assert(!JSON.stringify(dropped).includes("YWJjZGVm"));
const binaryCollector = eventCollector("session-a", "target-a");
binaryCollector.listener("Network.webSocketFrameReceived", {
requestId: "ws-binary",
timestamp: 1,
response: { opcode: 2, payloadData: "AP8=" },
});
assert.deepEqual(binaryCollector.records[0], {
schema_version: "1.0",
session_id: "session-a",
target_id: "target-a",
kind: "websocket_frame",
connection_id: "ws-binary",
direction: "received",
opcode: 2,
payload_bytes: 2,
encoded_payload_bytes: 4,
payload: { state: "omitted", reason: "frame_policy" },
});
});
test("query and export isolate sessions before pagination", () => {
@@ -86,3 +106,10 @@ test("resource baseline summarizes repeated samples", () => {
cpu_percent: { min: 10, max: 30, mean: 20, p95: 30 },
});
});
test("fixed report retains every startup resource baseline", async () => {
const report = JSON.parse(await readFile(new URL("../artifacts/m0-report.json", import.meta.url), "utf8"));
assert(Array.isArray(report.resource_samples));
assert.deepEqual(report.resource_samples.map(({ sample }) => sample), [1, 2, 3]);
assert(report.resource_samples.every(({ resources }) => resources.sample_count > 1));
});