code wiki / (root) / nx_site_monitor_gate.nx

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}