Harden audio meter regression coverage

This commit is contained in:
Mikei386
2026-07-21 21:36:26 +02:00
parent 9b5250d42b
commit a123539023
9 changed files with 370 additions and 121 deletions
+7 -2
View File
@@ -19,10 +19,15 @@ const [metrics] = sockets;
let count = 0;
let lastSeq = 0;
let invalidPayload = false;
let maxFrameAgeMs = 0;
metrics.addEventListener('message', (event) => {
const frame = JSON.parse(String(event.data));
const seq = Number(frame.seq);
if (seq <= lastSeq || 'spectro' in frame || 'wave_env' in frame || 'xy_l' in frame || 'wave_l' in frame) {
const timestamp = Number(frame.timestamp_ms);
const age = Date.now() - timestamp;
maxFrameAgeMs = Math.max(maxFrameAgeMs, age);
if (seq <= lastSeq || !Number.isFinite(timestamp) || age < -100 || age > 500
|| 'spectro' in frame || 'wave_env' in frame || 'xy_l' in frame || 'wave_l' in frame) {
invalidPayload = true;
}
lastSeq = seq;
@@ -33,4 +38,4 @@ await new Promise((resolve) => setTimeout(resolve, 1100));
sockets.forEach((socket) => socket.close());
assert.equal(invalidPayload, false, 'metrics must be ordered and contain no large visual payloads');
assert.ok(count >= 50 && count <= 75, `expected about 60 metrics/s, received ${count}`);
console.log(`runtime websocket test passed (${count} metrics in 1.1 s; all three streams opened)`);
console.log(`runtime websocket test passed (${count} metrics in 1.1 s; max frame age ${maxFrameAgeMs} ms; all three streams opened)`);