38 lines
1.7 KiB
JavaScript
38 lines
1.7 KiB
JavaScript
import assert from "node:assert/strict";
|
|
import test from "node:test";
|
|
|
|
import {
|
|
HOST_TELEMETRY_SCHEMA,
|
|
telegrafBatchToHostTelemetry,
|
|
} from "../src/index.mjs";
|
|
|
|
test("normalizes a bounded Telegraf Linux batch", () => {
|
|
const value = telegrafBatchToHostTelemetry({ metrics: [
|
|
{ name: "cpu", tags: { cpu: "cpu-total", host: "edge-01" }, fields: { usage_active: 21.5 }, timestamp: 1_777_000_000 },
|
|
{ name: "mem", tags: { host: "edge-01" }, fields: { total: 1024, available: 700, used: 324, used_percent: 31.64 }, timestamp: 1_777_000_000 },
|
|
{ name: "system", tags: { host: "edge-01" }, fields: { load1: 0.2, load5: 0.1, load15: 0.05, uptime: 120, n_users: 1 }, timestamp: 1_777_000_000 },
|
|
{ name: "net", tags: { interface: "eth0", host: "edge-01" }, fields: { bytes_recv: 100, bytes_sent: 200 }, timestamp: 1_777_000_000 },
|
|
{ name: "systemd_units", tags: { name: "nodedc-device-edge-channel.service", load: "loaded", active: "active", sub: "running" }, fields: { mem_current: 2048, restarts: 0, pid: 42 }, timestamp: 1_777_000_000 },
|
|
] }, {
|
|
hostKey: "robot2b-b2-edge-vps",
|
|
architecture: "x64",
|
|
kernelRelease: "6.8.0",
|
|
cpuModel: "KVM CPU",
|
|
logicalProcessors: 1,
|
|
});
|
|
|
|
assert.equal(value.schemaVersion, HOST_TELEMETRY_SCHEMA);
|
|
assert.equal(value.cpu.usagePercent, 21.5);
|
|
assert.equal(value.memory.totalBytes, 1024);
|
|
assert.equal(value.network[0].interface, "eth0");
|
|
assert.equal(value.services[0].activeState, "active");
|
|
assert.equal(Object.isFrozen(value), true);
|
|
});
|
|
|
|
test("rejects an oversized Telegraf batch", () => {
|
|
assert.throws(
|
|
() => telegrafBatchToHostTelemetry({ metrics: Array.from({ length: 513 }, () => ({})) }, { hostKey: "host-01" }),
|
|
/host_telemetry_telegraf_batch_invalid/,
|
|
);
|
|
});
|