import test from 'node:test'; import assert from 'node:assert/strict'; import { createExecutorQueueDelayTracker } from '../src/core/executor-queue-delay.mjs'; test('executor queue delay tracker records recent percentiles and warning state', () => { let nowMs = Date.parse('2026-06-12T10:00:00.000Z'); const tracker = createExecutorQueueDelayTracker({ sampleLimit: 5, warningMs: 1_000, criticalMs: 5_000, now: () => nowMs, }); for (const value of [10, 25, 100, 1_250, 7_500]) { tracker.record({ commandToExecutorMs: value, commandId: `cmd-${value}`, quoteId: `quote-${value}`, pair: 'nbtc->eure', }); nowMs += 1_000; } const state = tracker.getState(); assert.equal(state.status, 'critical'); assert.equal(state.warning, true); assert.equal(state.critical, true); assert.equal(state.sample_count, 5); assert.equal(state.latest_ms, 7_500); assert.equal(state.max_ms, 7_500); assert.equal(state.p50_ms, 100); assert.equal(state.p90_ms, 7_500); assert.equal(state.p99_ms, 7_500); assert.match(state.warning_reason, /command_to_executor_ms/); });