import test from 'brittle' import { MORE_STATIC_CHARTS } from '../shared/metrics-more.js' import { CHART_BY_ID, getAllChartDefs } from '../shared/metrics.js' import { parseSoftirqs, parseConntrack, parseSnmp6 } from '../server/services/collectors/host-more.js' import { MetricsCollector } from '../server/services/collector.js' test('more static charts merged', (t) => { t.ok(MORE_STATIC_CHARTS.length > 15) for (const id of [ 'mem.directmaps', 'system.softirqs', 'net.conntrack', 'ipv6.packets', 'peardata.cpu', 'system.power', ]) { t.ok(CHART_BY_ID.has(id), id) } t.ok(getAllChartDefs().length > 80) }) test('host-more parsers', (t) => { const soft = parseSoftirqs() t.ok(typeof soft === 'object') const ct = parseConntrack() t.ok(typeof ct.entries === 'number') t.ok(typeof parseSnmp6() === 'object') }) test('collector second tick includes deep/more charts on Linux', async (t) => { if (process.platform !== 'linux') { t.pass('linux-only') return } const c = new MetricsCollector({ intervalMs: 40 }) /** @type {Set} */ const charts = new Set() c.on('samples', (batch) => { for (const s of batch) charts.add(s.chart) }) c.start() await new Promise((r) => setTimeout(r, 120)) c.stop() t.ok(charts.has('system.cpu')) // softirqs / conntrack may be empty arrays of zeros but charts should emit t.ok(charts.has('system.softirqs') || charts.has('net.conntrack') || charts.has('mem.directmaps')) })