Files
peardata/test/export.test.js
T
Raven Scott 1d46b7b3ad
CI / test (push) Failing after 6s
Release rolling / release (push) Has been cancelled
updates
2026-07-18 19:11:32 -04:00

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)
})