Files
peardata/test/metrics-more.test.js
T
Raven Scott af6609c2d3
CI / test (push) Successful in 1m11s
Release rolling / release (push) Successful in 7m35s
CPU reductions (same charts/features)
Cache cpuidle names (was re-reading name sysfs every tick × cores)
Cache CPU sysfs dir list + register cpufreq/throttle once
Map for per-core prev lookups (was O(n²) .find)
Dedupe meminfo/vmstat once per tick
Cache iface speed/duplex/mtu/qlen (30s)
Cache inotify limits (30s)
Gate registerChart for IRQs, cpuidle, peardock mapped charts
Remove leftover profile() stderr timers
Cache os.cpus().length in docker collector
Grow fd-cache buffer past 64KB for /proc/interrupts etc.
2026-07-22 13:40:39 -04:00

48 lines
1.5 KiB
JavaScript

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<string>} */
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'))
})