code wiki / _hdl_build / nx_cleanserve_resolve_gate.nx
nx_cleanserve_resolve_gate.nx source
↩ module page · 35 lines · 3418 B
1// nx_cleanserve_resolve_gate.nx -- KAT witness for the clean-serve last-resort resolve helpers before they reach
2// the LIVE /clean route. csd_plan_url turns a sniff plan into the <video src>; a bug = a broken player the deploy
3// health-check can't see. csd_looks_videoish gates the JS-VM off text pages. license_tier: ORIGINAL expect_exit:0
4import "nx_syscalls.nx"
5import "nx_cleanserve_resolve.nx"
6
7func gcw(s: *u8) -> i64 { var n: i64=0; while s[n]!=(0 as u8){n=n+1} sys_write(1,s,n); return 0 }
8func gpn(v: i64) -> i64 { var m: i64=v; if m==0 { gcw("0" as *u8); return 0 } let t: *u8=sys_mmap(24); var k: i64=0; while m>0 { t[k]=(48+(m%10)) as u8; m=m/10; k=k+1 } let o: *u8=sys_mmap(24); var i: i64=0; while i<k { o[i]=t[k-1-i]; i=i+1 } sys_write(1,o,k); return 0 }
9func gslen(s: *u8) -> i64 { var n: i64=0; while s[n]!=(0 as u8){n=n+1} return n }
10func chk_int(name: *u8, got: i64, want: i64, f: *i64) -> i64 { gcw(name); gcw(" got=" as *u8); gpn(got); gcw(" want=" as *u8); gpn(want); if got==want { gcw(" PASS\n" as *u8) } else { gcw(" FAIL\n" as *u8); f[0]=f[0]+1 } return 0 }
11func chk_str(name: *u8, gb: *u8, gl: i64, want: *u8, f: *i64) -> i64 {
12 let wl: i64 = gslen(want); var ok: i64 = 1
13 if gl != wl { ok=0 } else { var i: i64=0; while i<gl { if (gb[i]&0xff)!=(want[i]&0xff) { ok=0 } i=i+1 } }
14 gcw(name); gcw(" got='" as *u8); sys_write(1,gb,gl); gcw("' want='" as *u8); gcw(want)
15 if ok==1 { gcw("' PASS\n" as *u8) } else { gcw("' FAIL\n" as *u8); f[0]=f[0]+1 }
16 return 0
17}
18func main() -> i64 {
19 let f: *i64 = sys_mmap(8) as *i64; f[0]=0
20 let out: *u8 = sys_mmap(1024)
21 // csd_plan_url: plan ("ROUTE=<r> URL=<url>") -> the stream URL
22 var n: i64 = csd_plan_url("ROUTE=hls URL=https://cdn/x.m3u8" as *u8, out, 1024); chk_str("plan_url hls" as *u8, out, n, "https://cdn/x.m3u8" as *u8, f)
23 n = csd_plan_url("ROUTE=direct URL=https://c/v.mp4" as *u8, out, 1024); chk_str("plan_url direct" as *u8, out, n, "https://c/v.mp4" as *u8, f)
24 n = csd_plan_url("ROUTE=hls URL=master.m3u8?token=abc123" as *u8, out, 1024); chk_str("plan_url query" as *u8, out, n, "master.m3u8?token=abc123" as *u8, f)
25 n = csd_plan_url("ROUTE=none URL=-" as *u8, out, 1024); chk_int("plan_url '-' placeholder->0" as *u8, n, 0, f)
26 n = csd_plan_url("ROUTE=none nourl" as *u8, out, 1024); chk_int("plan_url missing URL=->0" as *u8, n, 0, f)
27 // csd_looks_videoish: cheap player pre-check
28 let s1: *u8 = "<div><video src=x></video>" as *u8; chk_int("videoish <video>" as *u8, csd_looks_videoish(s1, gslen(s1)), 1, f)
29 let s2: *u8 = "var p=jwplayer('x')" as *u8; chk_int("videoish jwplayer" as *u8, csd_looks_videoish(s2, gslen(s2)), 1, f)
30 let s3: *u8 = "src=master.m3u8" as *u8; chk_int("videoish m3u8" as *u8, csd_looks_videoish(s3, gslen(s3)), 1, f)
31 let s4: *u8 = "a clip.mp4 here" as *u8; chk_int("videoish mp4" as *u8, csd_looks_videoish(s4, gslen(s4)), 1, f)
32 let s5: *u8 = "plain news article, no player" as *u8; chk_int("videoish plain-text->0" as *u8, csd_looks_videoish(s5, gslen(s5)), 0, f)
33 if f[0]==0 { gcw("NX-CLEANSERVE-RESOLVE-GATE 10/10 verdict=GREEN\n" as *u8); sys_exit(0); return 0 }
34 gcw("NX-CLEANSERVE-RESOLVE-GATE FAIL count=" as *u8); gpn(f[0]); gcw("\n" as *u8); sys_exit(1); return 1
35}