Hot memory — 15m → 24h (or custom points) Warm memory — downsampled ring + samples-per-bucket Disk history — auto-rotate by age (1 day → 1 year, forever, or custom days) Soft disk budget + max warm points Auto prune on a configurable hour interval Dry-run prune / Prune now / Save to agent (admin role)
31 lines
1.0 KiB
JavaScript
31 lines
1.0 KiB
JavaScript
import test from 'brittle'
|
|
import { formatMib, formatKilobitsPerSec, formatBytes } from '../shared/format.js'
|
|
|
|
test('formatMib scales through binary units', async (t) => {
|
|
t.is(formatMib(null), '—')
|
|
t.is(formatMib(NaN), '—')
|
|
t.is(formatMib(0), '0 B')
|
|
t.is(formatMib(0.5), '512 KiB')
|
|
t.is(formatMib(256), '256 MiB')
|
|
t.is(formatMib(1024), '1 GiB')
|
|
t.is(formatMib(1536), '1.5 GiB')
|
|
t.is(formatMib(1024 * 1024), '1 TiB')
|
|
})
|
|
|
|
test('formatKilobitsPerSec scales through SI bit rates', async (t) => {
|
|
t.is(formatKilobitsPerSec(null), '—')
|
|
t.is(formatKilobitsPerSec(0), '0 b/s')
|
|
t.is(formatKilobitsPerSec(0.5), '500 b/s')
|
|
t.is(formatKilobitsPerSec(12.5), '12.5 kb/s')
|
|
t.is(formatKilobitsPerSec(1500), '1.5 Mb/s')
|
|
t.is(formatKilobitsPerSec(2_500_000), '2.5 Gb/s')
|
|
t.is(formatKilobitsPerSec(3_000_000_000), '3 Tb/s')
|
|
})
|
|
|
|
test('formatBytes scales binary units', async (t) => {
|
|
t.is(formatBytes(null), '—')
|
|
t.is(formatBytes(0), '0 B')
|
|
t.is(formatBytes(512), '512 B')
|
|
t.is(formatBytes(2048), '2 KiB')
|
|
})
|