Add live server performance monitoring
This commit is contained in:
19
server/request-monitor.test.js
Normal file
19
server/request-monitor.test.js
Normal file
@@ -0,0 +1,19 @@
|
||||
import { test } from 'node:test';
|
||||
import assert from 'node:assert/strict';
|
||||
import { createRequestMonitor } from './request-monitor.js';
|
||||
|
||||
test('request monitor records route latency, status errors, and current process health', async () => {
|
||||
let t = 100;
|
||||
const monitor = createRequestMonitor({ now: () => t, snapshotIntervalMs: 0, adapters: { media: () => ({ queued: 2 }) } });
|
||||
const middleware = monitor.middleware();
|
||||
const ctx = (path, status) => ({ req: { path }, res: { status } });
|
||||
await middleware(ctx('/api/media/abc/status', 200), async () => { t += 8; });
|
||||
await middleware(ctx('/api/media/xyz/status', 503), async () => { t += 12; });
|
||||
const sample = await monitor.sample();
|
||||
assert.equal(sample.routes['/api/media/:id/status'].requests, 2);
|
||||
assert.equal(sample.routes['/api/media/:id/status'].errors, 1);
|
||||
assert.equal(sample.routes['/api/media/:id/status'].p50, 8);
|
||||
assert.equal(sample.media.queued, 2);
|
||||
assert.ok(sample.rssBytes > 0);
|
||||
monitor.close();
|
||||
});
|
||||
Reference in New Issue
Block a user