import {test} from "node:test" import assert from "node:assert/strict" import {buildServerResourceMap,greTunnelProbe} from "./network-map-layout" import {mergeGreMetricsWithSpeedProbe} from "./map-gre-speed-probe" import {servers,greTunnels} from "./data" test("live resources preserve zero, partial poll and unknowns without fake history",()=>{ const base={...servers[0],cpuLoad:undefined,totalMemory:undefined,freeMemory:undefined,uptime:undefined,polledAt:undefined} const unknown=buildServerResourceMap([base])[base.id] assert.deepEqual(unknown,{cpu:null,cpuHistory:[],ramTotal:null,ramUsed:null,hddUsed:null,hddTotal:null,uptimeSeconds:null,measuredAt:null,fromPoll:true}) const partial=buildServerResourceMap([{...base,cpuLoad:0,uptime:"0s",polledAt:"2020-01-01T00:00:00Z"}])[base.id] assert.equal(partial.cpu,0);assert.equal(partial.uptimeSeconds,0);assert.equal(partial.measuredAt,"2020-01-01T00:00:00Z");assert.equal(partial.ramUsed,null) const memory=buildServerResourceMap([{...base,totalMemory:1048576,freeMemory:1048576,uptime:"bad"}])[base.id] assert.equal(memory.ramUsed,0);assert.equal(memory.ramTotal,1);assert.equal(memory.uptimeSeconds,null) assert.ok(buildServerResourceMap([base],true)[base.id].cpuHistory.length>0) }) test("live GRE does not hash metrics and probe values retain zero and fractions",()=>{ const fallback=greTunnelProbe(greTunnels[0]);assert.deepEqual(fallback,{pingMs:null,dlMbps:null,ulMbps:null}) assert.equal(greTunnelProbe(greTunnels[0],true).pingMs!=null,true) const merged=mergeGreMetricsWithSpeedProbe({id:"p",srcServerId:"1",dstServerId:"2",lastPingRttMs:0,lastTxAvgMbps:0,lastRxAvgMbps:0.125},fallback) assert.deepEqual(merged,{pingMs:0,dlMbps:0,ulMbps:0.125,hasSpeedMonitor:true}) })