code wiki / _hdl_build / nx_govern_sweep_gate.nx

nx_govern_sweep_gate.nx source

↩ module page · 63 lines · 3252 B

1// nx_govern_sweep_gate.nx -- gate for gov F750. Fixtures built with explicit newline bytes. 2// T1 crash-loop log (25 respawns, threshold 20) -> UNGOVERNED (positive: catches ungoverned churn) 3// T2 healthy log (3 respawns) -> GOVERNED (NEGATIVE CONTROL) 4// Captures stdout via tr_run_capture + substring-matches the verdict. license_tier: ORIGINAL expect_exit: 0 5import "nx_tool_run.nx" 6 7func g_w(fd: i64, s: *u8) -> i64 { var n: i64 = 0; while s[n] != (0 as u8) { n = n + 1 } sys_write(fd, s, n); return 0 } 8func g_wn(fd: i64, v: i64) -> i64 { var m: i64 = v; if m < 0 { g_w(fd, "-" as *u8); m = 0 - m } let t: *u8 = sys_mmap(28); var k: i64 = 0; if m == 0 { t[0] = 48 as u8; k = 1 } while m > 0 { t[k] = (48 + (m % 10)) as u8; m = m / 10; k = k + 1 } let o: *u8 = sys_mmap(28); var i: i64 = 0; while i < k { o[i] = t[k - 1 - i]; i = i + 1 } sys_write(fd, o, k); return 0 } 9func g_line(fd: i64, s: *u8) -> i64 { var n: i64 = 0; while s[n] != (0 as u8) { n = n + 1 } sys_write(fd, s, n); let nl: *u8 = sys_mmap(2); nl[0] = 10 as u8; sys_write(fd, nl, 1); return 0 } 10func g_has(buf: *u8, n: i64, pat: *u8) -> i64 { 11 var pl: i64 = 0 12 while pat[pl] != (0 as u8) { pl = pl + 1 } 13 if pl == 0 { return 0 } 14 var i: i64 = 0 15 while i + pl <= n { 16 var k: i64 = 0 17 var m: i64 = 1 18 while k < pl { if buf[i + k] != pat[k] { m = 0; k = pl } else { k = k + 1 } } 19 if m == 1 { return 1 } 20 i = i + 1 21 } 22 return 0 23} 24func g_run(path: *u8, thr: *u8, out: *u8, ocap: i64, ol: *i64) -> i64 { 25 let av: *i64 = sys_mmap(64) as *i64 26 av[0] = "_offc/nx_govern_sweep.elf" as i64 27 av[1] = "respawns" as i64 28 av[2] = path as i64 29 av[3] = thr as i64 30 av[4] = 0 31 return tr_run_capture("_offc/nx_govern_sweep.elf" as *u8, av, out, ocap, ol) 32} 33func main() -> i64 { 34 let f1: i64 = sys_openat_wr("/tmp/gv_loop.log" as *u8, 0x1a4) 35 var i: i64 = 0 36 while i < 25 { g_line(f1, " [reader-keep] reader pid=999 died sig=0 code=1 -> respawn" as *u8); i = i + 1 } 37 sys_close(f1) 38 let f2: i64 = sys_openat_wr("/tmp/gv_ok.log" as *u8, 0x1a4) 39 g_line(f2, " [guard] restarted nx_torrent_daemon :8097 (was dead) -> respawn" as *u8) 40 g_line(f2, " [reap] pid=21012 sig=0 code=0" as *u8) 41 g_line(f2, " [guard] restarted nx_x :1 -> respawn" as *u8) 42 g_line(f2, " SVC all UP" as *u8) 43 sys_close(f2) 44 let ocap: i64 = 4096 45 let out: *u8 = sys_mmap(ocap) 46 let ol: *i64 = sys_mmap(16) as *i64 47 var pass: i64 = 0 48 var tot: i64 = 0 49 50 tot = tot + 1 51 g_run("/tmp/gv_loop.log" as *u8, "20" as *u8, out, ocap, ol) 52 if g_has(out, ol[0], "verdict=UNGOVERNED" as *u8) == 1 { pass = pass + 1; g_w(1, "T1 crash-loop->UNGOVERNED PASS\n" as *u8) } else { g_w(1, "T1 FAIL\n" as *u8) } 53 54 tot = tot + 1 55 g_run("/tmp/gv_ok.log" as *u8, "20" as *u8, out, ocap, ol) 56 if g_has(out, ol[0], "verdict=GOVERNED" as *u8) == 1 { pass = pass + 1; g_w(1, "T2 healthy->GOVERNED PASS (neg-control)\n" as *u8) } else { g_w(1, "T2 FAIL\n" as *u8) } 57 58 g_w(1, "GOVERN-SWEEP-GATE pass=" as *u8); g_wn(1, pass); g_w(1, "/" as *u8); g_wn(1, tot) 59 if pass == tot { g_w(1, " verdict=GREEN\n" as *u8); sys_exit(0); return 0 } 60 g_w(1, " verdict=RED\n" as *u8) 61 sys_exit(1) 62 return 1 63}