38 lines
1.2 KiB
JavaScript
38 lines
1.2 KiB
JavaScript
import assert from "node:assert/strict";
|
|
import test from "node:test";
|
|
|
|
import { createHostTelemetryCollector } from "./host-telemetry-runtime.mjs";
|
|
|
|
test("accepts Telegraf only on the bounded local collector", async () => {
|
|
let submitted = null;
|
|
const collector = createHostTelemetryCollector({
|
|
hostKey: "robot2b-b2-edge-vps",
|
|
host: "127.0.0.1",
|
|
port: 0,
|
|
submit: async (value) => { submitted = value; },
|
|
});
|
|
const address = await collector.start();
|
|
try {
|
|
const response = await fetch(`http://127.0.0.1:${address.port}/internal/v1/host-telemetry`, {
|
|
method: "POST",
|
|
headers: { "content-type": "application/json" },
|
|
body: JSON.stringify({ metrics: [
|
|
{ name: "cpu", tags: { cpu: "cpu-total", host: "edge" }, fields: { usage_active: 9 }, timestamp: Math.floor(Date.now() / 1000) },
|
|
] }),
|
|
});
|
|
assert.equal(response.status, 202);
|
|
assert.equal(submitted.hostKey, "robot2b-b2-edge-vps");
|
|
assert.equal(collector.status().accepted, 1);
|
|
} finally {
|
|
await collector.stop();
|
|
}
|
|
});
|
|
|
|
test("rejects non-loopback collector binds", () => {
|
|
assert.throws(() => createHostTelemetryCollector({
|
|
hostKey: "host-01",
|
|
host: "0.0.0.0",
|
|
submit: async () => {},
|
|
}), /host_telemetry_host_invalid/);
|
|
});
|