Files
peardata/test/anomaly-silence.test.js
T
Raven Scott 9bc7a67020
CI / test (push) Successful in 51s
Release rolling / release (push) Has been cancelled
updates
2026-07-18 19:04:39 -04:00

77 lines
1.7 KiB
JavaScript

import test from 'brittle'
import { AnomalyEngine } from '../server/services/anomaly.js'
import { silenceAlert } from '../server/services/alerts.js'
test('silence TTL auto-reenables alert', (t) => {
const engine = new AnomalyEngine({ cpuCount: 2 })
// Use singleton path via silenceAlert — it mutates getAnomalyEngine().
// Drive a local engine for isolation instead:
const cfg = {
id: 'cpu_user_high',
chart: 'system.cpu',
dimension: 'user',
warn: 10,
crit: 50,
comparator: '>',
enabled: true,
info: 'test',
}
engine.setConfig(cfg)
engine.setConfig({
...cfg,
enabled: false,
_silencedUntil: Date.now() - 1000,
})
const fired = engine.evaluate([
{
chart: 'system.cpu',
context: 'system.cpu',
ts: Date.now(),
values: {
user: 80,
system: 0,
nice: 0,
iowait: 0,
irq: 0,
softirq: 0,
idle: 20,
steal: 0,
guest: 0,
guest_nice: 0,
},
},
])
t.ok(engine.configs.get('cpu_user_high').enabled === true)
t.ok(fired.length >= 1)
t.ok(silenceAlert) // keep import used / API present
})
test('silence still active before TTL', (t) => {
const engine = new AnomalyEngine({ cpuCount: 2 })
engine.setConfig({
id: 'cpu_user_high',
chart: 'system.cpu',
dimension: 'user',
warn: 10,
crit: 50,
comparator: '>',
enabled: false,
_silencedUntil: Date.now() + 60_000,
info: 'test',
})
const fired = engine.evaluate([
{
chart: 'system.cpu',
context: 'system.cpu',
ts: Date.now(),
values: { user: 90, idle: 10 },
},
])
t.is(fired.length, 0)
t.is(engine.configs.get('cpu_user_high').enabled, false)
})