56 lines
1.6 KiB
JavaScript
56 lines
1.6 KiB
JavaScript
import test from 'brittle'
|
|
import fs from 'fs'
|
|
import path from 'path'
|
|
import os from 'os'
|
|
import { getStore } from '../server/services/store.js'
|
|
import {
|
|
toPrometheusText,
|
|
writeSnapshotFile,
|
|
buildSnapshot,
|
|
} from '../server/services/export.js'
|
|
|
|
test('toPrometheusText includes peardata_info and dimensions', (t) => {
|
|
const text = toPrometheusText({
|
|
'system.cpu': {
|
|
ts: Date.now(),
|
|
values: { user: 10, idle: 90 },
|
|
},
|
|
})
|
|
t.ok(text.includes('peardata_info'))
|
|
t.ok(text.includes('peardata_system_cpu'))
|
|
t.ok(text.includes('dimension="idle"'))
|
|
t.ok(text.includes(' 90'))
|
|
})
|
|
|
|
test('writeSnapshotFile respects PEARDATA_EXPORT_DIR', (t) => {
|
|
const dir = fs.mkdtempSync(path.join(os.tmpdir(), 'peardata-export-'))
|
|
const prev = process.env.PEARDATA_EXPORT_DIR
|
|
process.env.PEARDATA_EXPORT_DIR = dir
|
|
const snap = { ts: 1234567890, latest: {}, success: true }
|
|
const written = writeSnapshotFile(snap)
|
|
t.ok(written.path)
|
|
t.ok(fs.existsSync(written.path))
|
|
const parsed = JSON.parse(fs.readFileSync(written.path, 'utf8'))
|
|
t.is(parsed.ts, 1234567890)
|
|
fs.rmSync(dir, { recursive: true, force: true })
|
|
if (prev == null) delete process.env.PEARDATA_EXPORT_DIR
|
|
else process.env.PEARDATA_EXPORT_DIR = prev
|
|
})
|
|
|
|
test('buildSnapshot returns latest from store', (t) => {
|
|
// ensure singleton has something
|
|
const store = getStore()
|
|
store.ingest([
|
|
{
|
|
chart: 'system.ram',
|
|
context: 'system.ram',
|
|
ts: Date.now(),
|
|
values: { used: 100, free: 200, cached: 50, buffers: 10 },
|
|
},
|
|
])
|
|
const snap = buildSnapshot()
|
|
t.ok(snap.success)
|
|
t.ok(snap.latest['system.ram'])
|
|
t.ok(snap.health)
|
|
})
|