code wiki / _hdl_build / nx_consul_health_test.nx

nx_consul_health_test.nx source

↩ module page · 66 lines · 4602 B

1// nx_consul_health_test.nx -- CHEALTHGATE: proves the flap-protected, probe-driven health checks and that 2// they close the loop into discovery. fail_thr=3, pass_thr=2. GREEN iff: 1 failure keeps PASSING (flap 3// protection); 3 consecutive failures -> CRITICAL; 1 success after CRITICAL is NOT enough; 2 successes -> 4// PASSING (recovery); a success resets the failure counter; and at the registry level a node driven CRITICAL 5// is dropped from discovery while a 1-fail (flap-protected) node stays. exit 0 on 7/7. 6import "nx_consul_health.nx" 7import "nx_syscalls.nx" 8 9func hg_puts(s: *u8) -> i64 { var n: i64 = 0; while s[n] != (0 as u8) { n = n + 1 } sys_write(1, s, n); return 0 } 10func hg_num(v: i64) -> i64 { let b: *u8 = sys_mmap(28); var m: i64=v; if m<0 {m=0-m;sys_write(1,"-" as *u8,1)}; let t: *u8 = sys_mmap(28); var k: i64=0; if m==0 {t[0]=48;k=1}; while m>0 {t[k]=48+(m%10); m=m/10; k=k+1}; var i: i64=0; while i<k {b[i]=t[k-1-i]; i=i+1}; sys_write(1,b,k); return 0 } 11 12func main() -> i64 { 13 hg_puts("=== SOVEREIGN CONSUL LIVE HEALTH CHECKS (flap-protected, probe-driven) ===\n" as *u8) 14 let fail_thr: i64 = 3 15 let pass_thr: i64 = 2 16 17 // single-instance transition trace 18 let sh: *i64 = sys_mmap(8) as *i64; sh[0] = SVC_PASSING 19 let scf: *i64 = sys_mmap(8) as *i64; scf[0] = 0 20 let scp: *i64 = sys_mmap(8) as *i64; scp[0] = 0 21 let h1: i64 = hc_tick(sh, scf, scp, 0, 0, fail_thr, pass_thr) // fail #1 -> still PASSING 22 hc_tick(sh, scf, scp, 0, 0, fail_thr, pass_thr) // fail #2 -> still PASSING 23 let h3: i64 = hc_tick(sh, scf, scp, 0, 0, fail_thr, pass_thr) // fail #3 -> CRITICAL 24 let h4: i64 = hc_tick(sh, scf, scp, 0, 1, fail_thr, pass_thr) // pass #1 -> still CRITICAL 25 let h5: i64 = hc_tick(sh, scf, scp, 0, 1, fail_thr, pass_thr) // pass #2 -> PASSING (recovery) 26 let cf_after_recover: i64 = scf[0] // should be 0 (reset by successes) 27 28 // registry integration: 2 web instances, both PASSING 29 let reg: *i64 = sys_mmap(16) as *i64; reg[0]=1; reg[1]=1 30 let names: *i64 = sys_mmap(16) as *i64; names[0]=100; names[1]=100 31 let rh: *i64 = sys_mmap(16) as *i64; rh[0]=SVC_PASSING; rh[1]=SVC_PASSING 32 let rcf: *i64 = sys_mmap(16) as *i64; rcf[0]=0; rcf[1]=0 33 let rcp: *i64 = sys_mmap(16) as *i64; rcp[0]=0; rcp[1]=0 34 let out: *i64 = sys_mmap(64) as *i64 35 36 // flap: idx0 gets ONE failure -> stays PASSING -> discovery still returns BOTH 37 hc_tick(rh, rcf, rcp, 0, 0, fail_thr, pass_thr) 38 let disc_flap: i64 = cs_discover(reg, names, rh, 2, 100, out) // expect 2 39 // down: idx1 gets 3 failures -> CRITICAL -> discovery returns only idx0 40 hc_tick(rh, rcf, rcp, 1, 0, fail_thr, pass_thr) 41 hc_tick(rh, rcf, rcp, 1, 0, fail_thr, pass_thr) 42 hc_tick(rh, rcf, rcp, 1, 0, fail_thr, pass_thr) 43 let disc_down: i64 = cs_discover(reg, names, rh, 2, 100, out) // expect 1 44 45 hg_puts(" 1fail=" as *u8); hg_num(h1); hg_puts(" 3fail=" as *u8); hg_num(h3); hg_puts(" +1pass=" as *u8); hg_num(h4) 46 hg_puts(" +2pass=" as *u8); hg_num(h5); hg_puts(" cfreset=" as *u8); hg_num(cf_after_recover) 47 hg_puts(" | discover flap=" as *u8); hg_num(disc_flap); hg_puts(" down=" as *u8); hg_num(disc_down); hg_puts("\n" as *u8) 48 49 let r: *i64 = sys_mmap(8*8) as *i64 50 r[0] = 0; if h1 == SVC_PASSING { r[0] = 1 } // 1 failure flap-protected 51 r[1] = 0; if h3 == SVC_CRITICAL { r[1] = 1 } // 3 consecutive failures -> CRITICAL 52 r[2] = 0; if h4 == SVC_CRITICAL { r[2] = 1 } // 1 success not enough to recover 53 r[3] = 0; if h5 == SVC_PASSING { r[3] = 1 } // 2 successes -> recover 54 r[4] = 0; if cf_after_recover == 0 { r[4] = 1 } // success resets the failure counter 55 r[5] = 0; if disc_flap == 2 { r[5] = 1 } // flap-protected node stays in discovery 56 r[6] = 0; if disc_down == 1 { r[6] = 1 } // CRITICAL node dropped from discovery (loop closed) 57 58 var pass: i64 = 0; var i: i64 = 0 59 while i < 7 { pass = pass + r[i]; i = i + 1 } 60 hg_puts("----\n passed " as *u8); hg_num(pass); hg_puts("/7\n" as *u8) 61 if pass == 7 { 62 hg_puts("CHEALTHGATE flap_protection=1 fail_thr->critical=1 recovery_pass_thr=1 counter_reset=1 loop_closed_into_discovery=1 exceed[sovereign live health checks driven by nx_reach_probe TCP reachability; flap-protected; health feeds discovery+service-DNS = real reachability reflected; bits-up] verdict=GREEN\n" as *u8) 63 sys_exit(0); return 0 64 } 65 hg_puts("CHEALTHGATE verdict=RED\n" as *u8); sys_exit(1); return 1 66}