nx_site_monitor_gate.nx source
↩ module page · 46 lines · 3187 B
1// nx_site_monitor_gate.nx -- KAT for uptime/alerting. Deterministically asserts the transition classifier
2// (went-down / went-hung / recovered / steady / first-sight-baseline), the uptime% math, and the state-TSV
3// parse round-trip. exit 0 = pass, N = assertion N failed.
4import "nx_site_monitor.nx"
5import "nx_assert.nx"
6
7func g_put(buf: *u8, off: i64, s: *u8) -> i64 { var o: i64=off; var i: i64=0; while s[i]!=(0 as u8){buf[o]=s[i];o=o+1;i=i+1} return o }
8
9func main() -> i64 {
10 // --- transition classifier (HP_SERVING=1, HP_REFUSED=2, HP_HUNG=3, HP_BADRESP=4; 0 = never-seen) ---
11 if sm_alert(0, HP_SERVING) != SM_NONE { return 1 } // first sight, already up -> baseline
12 if sm_alert(HP_SERVING, HP_SERVING) != SM_NONE { return 2 } // steady up
13 if sm_alert(HP_SERVING, HP_REFUSED) != SM_WENT_DOWN { return 3 }
14 if sm_alert(HP_SERVING, HP_HUNG) != SM_WENT_HUNG { return 4 } // HUNG distinct from DOWN
15 if sm_alert(HP_REFUSED, HP_SERVING) != SM_RECOVERED { return 5 }
16 if sm_alert(HP_REFUSED, HP_HUNG) != SM_WENT_HUNG { return 6 } // failure-mode change still alerts
17 if sm_alert(0, HP_REFUSED) != SM_WENT_DOWN { return 7 } // came up broken -> alert
18 if sm_alert(HP_HUNG, HP_HUNG) != SM_NONE { return 8 } // steady hung -> no re-alert spam
19
20 // --- uptime% ---
21 if sm_uptime_permil(3, 4) != 750 { return 9 }
22 if sm_uptime_permil(0, 0) != 0 { return 10 }
23 if sm_uptime_permil(10, 10) != 1000 { return 11 }
24
25 // --- state-TSV parse round-trip: "sites-v2\t1\t9\t10\n" + "vroom\t3\t2\t5\n" ---
26 let buf: *u8 = sys_mmap(4096); var p: i64 = 0
27 p = g_put(buf, p, "sites-v2" as *u8); buf[p]=9 as u8;p=p+1; p=sm_wri(buf,p,1); buf[p]=9 as u8;p=p+1; p=sm_wri(buf,p,9); buf[p]=9 as u8;p=p+1; p=sm_wri(buf,p,10); buf[p]=10 as u8;p=p+1
28 p = g_put(buf, p, "vroom" as *u8); buf[p]=9 as u8;p=p+1; p=sm_wri(buf,p,3); buf[p]=9 as u8;p=p+1; p=sm_wri(buf,p,2); buf[p]=9 as u8;p=p+1; p=sm_wri(buf,p,5); buf[p]=10 as u8;p=p+1
29
30 let lv: *i64 = sys_mmap(16) as *i64; let up: *i64 = sys_mmap(16) as *i64; let tot: *i64 = sys_mmap(16) as *i64
31 if sm_find(buf, p, "vroom" as *u8, lv, up, tot) != 1 { return 12 }
32 nx_puts_err("vroom prior: lv="); nx_puti_err(lv[0]); nx_puts_err("up="); nx_puti_err(up[0]); nx_puts_err("tot="); nx_puti_err(tot[0])
33 if lv[0] != HP_HUNG { return 13 }
34 if up[0] != 2 { return 14 }
35 if tot[0] != 5 { return 15 }
36 if sm_find(buf, p, "sites-v2" as *u8, lv, up, tot) != 1 { return 16 }
37 if lv[0] != HP_SERVING { return 17 }
38 if up[0] != 9 { return 18 }
39 if sm_find(buf, p, "torrent" as *u8, lv, up, tot) != 0 { return 19 } // absent -> not found, defaults
40 if lv[0] != 0 { return 20 }
41
42 nx_puts_err("--- vs UptimeRobot / Pingdom / StatusCake (uptime SaaS) ---\n" as *u8)
43 nx_puts_err("down-alert + uptime%% = PARITY (their core). EXCEEDS: sovereign (no SaaS account / no data egress / free), HUNG distinguished from DOWN (actionably different: kill vs start), deterministic + integrated with the supervisor + status page.\n" as *u8)
44 nx_puts_err("nx_site_monitor_gate verdict=GREEN pass=20\n" as *u8)
45 return 0
46}