import assert from 'node:assert/strict'; import test from 'node:test'; import { createSessionBrokerMetrics, formatSessionBrokerMetric, isSessionBrokerMetricsEnabled, } from './session-broker-metrics.mjs'; test('isSessionBrokerMetricsEnabled respects env flag', () => { assert.equal(isSessionBrokerMetricsEnabled({}), false); assert.equal(isSessionBrokerMetricsEnabled({ MEMIND_SESSION_BROKER_METRICS: '1' }), true); }); test('createSessionBrokerMetrics emits structured lines when enabled', () => { const lines = []; const metrics = createSessionBrokerMetrics({ enabled: true, logger: { log: (line) => lines.push(line) }, }); metrics.ownershipDenied({ userId: 'u1', sessionId: 's1' }); metrics.registerDuplicate({ userId: 'u1', sessionId: 's1', target: 'https://127.0.0.1:18006' }); metrics.resolveTargetMiss({ sessionId: 's1', node: 2, reason: 'legacy_node_fallback' }); assert.equal(lines.length, 3); assert.match(lines[0], /\[session_broker\.ownership\.denied\]/); assert.match(lines[1], /register\.duplicate/); assert.match(lines[2], /resolve_target\.miss/); assert.match(formatSessionBrokerMetric('ownership.denied', { sessionId: 's1' }), /"sessionId":"s1"/); }); test('createSessionBrokerMetrics stays silent when disabled', () => { const lines = []; const metrics = createSessionBrokerMetrics({ enabled: false, logger: { log: (line) => lines.push(line) }, }); metrics.ownershipDenied({ userId: 'u1', sessionId: 's1' }); assert.equal(lines.length, 0); });