Files
MikrotikManager/lib/network-map-metrics.test.ts

22 lines
1.7 KiB
TypeScript

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