Harden audio meter regression coverage
This commit is contained in:
@@ -21,6 +21,7 @@ const forced = context.buildRtaRuntimeConfig({
|
||||
RTA_BPO_MODE: '1_12',
|
||||
RTA_FREQ_RANGE: 'lf',
|
||||
RTA_IIR_ORDER: 2,
|
||||
RTA_DETECTOR: 'peak',
|
||||
CORR_RESPONSE_S: 2.5,
|
||||
CORR_RESET_TOKEN: 7,
|
||||
XY_POINTS: 256,
|
||||
@@ -29,6 +30,8 @@ assert.equal(forced.engine, 'iir');
|
||||
assert.equal(forced.bpo, '1_12');
|
||||
assert.equal(forced.freqRange, 'norm');
|
||||
assert.equal(forced.order, 6);
|
||||
assert.equal(forced.detector, 'peak');
|
||||
assert.equal(forced.tauFast, 0.125);
|
||||
assert.equal(forced.rtwCenters.length, 121);
|
||||
assert.equal(forced.correlationResponseS, 2.5);
|
||||
assert.equal(forced.correlationResetToken, 7);
|
||||
|
||||
@@ -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)`);
|
||||
|
||||
Reference in New Issue
Block a user