code wiki / _hdl_build / nx_quic_relay_test.nx
nx_quic_relay_test.nx source
↩ module page · 67 lines · 3598 B
1// nx_quic_relay_test.nx -- RUNG 8b gate: relay datagram fan-out. A peer's datagram is broadcast to every
2// OTHER peer (no echo), payload byte-exact through the relay's DATAGRAM re-framing. Native, sovereign.
3// license_tier: ORIGINAL
4import "nx_quic_relay.nx"
5import "nx_g_puts_lib.nx"
6
7func g_pn(v: i64) -> i64 {
8 if v==0 { sys_write(1,"0" as *u8,1); return 0 }
9 let b: *u8 = sys_mmap(28); var x: i64 = v
10 var d: i64=0; var y: i64=x
11 while y>0 { d=d+1; y=y/10 }
12 var i: i64=d-1; y=x
13 while i>=0 { b[i]=(48+(y%10)) as u8; y=y/10; i=i-1 }
14 sys_write(1,b,d); return 0
15}
16func g_check(name: *u8, cond: i64) -> i64 {
17 if cond==1 { g_puts(" PASS " as *u8) } else { g_puts(" FAIL " as *u8) }
18 g_puts(name); g_puts("\n" as *u8); return cond
19}
20// parse the DATAGRAM frame in peer `pi`'s buffer at offset 0; check its payload == expect[0..elen). returns 1/0.
21func check_payload(out_bufs: *u8, buf_cap: i64, pi: i64, flen: i64, expect: *u8, elen: i64) -> i64 {
22 let buf: *u8 = (out_bufs as i64 + pi * buf_cap) as *u8
23 let poff: *i64 = sys_mmap(8) as *i64
24 let pp: i64 = quic_datagram_parse(buf, flen, poff)
25 if pp != elen { return 0 }
26 var k: i64=0; while k<elen { if buf[poff[0]+k] != expect[k] { return 0 } k=k+1 }
27 return 1
28}
29
30func main() -> i64 {
31 g_puts("nx_quic_relay gate -- datagram fan-out to peers (no echo), FEC payload preserved\n" as *u8)
32 var pass: i64=0; var total: i64=0
33 let NP: i64 = 3; let CAP: i64 = 1024
34 let out_bufs: *u8 = sys_mmap(NP*CAP)
35 let out_lens: *i64 = sys_mmap(8*NP) as *i64
36 out_lens[0]=0; out_lens[1]=0; out_lens[2]=0
37
38 // ---- peer 0 broadcasts a 50-byte payload ----
39 let pay1: *u8 = sys_mmap(50)
40 var i: i64=0; while i<50 { pay1[i]=((i*9+3)&255) as u8; i=i+1 }
41 let d1: i64 = quic_relay_broadcast(NP, 0, pay1, 50, out_bufs, CAP, out_lens)
42 var b1: i64=1
43 if d1 != 2 { b1=0 }
44 if out_lens[0] != 0 { b1=0 } // sender NOT echoed
45 if out_lens[1] != 52 { b1=0 } // DATAGRAM(50) = 1 type + 1 len-varint + 50 = 52
46 if out_lens[2] != 52 { b1=0 }
47 pass = pass + g_check("peer0 broadcast: delivered=2, sender not echoed, peers 1&2 each got 52B frame" as *u8, b1); total=total+1
48 pass = pass + g_check("peer1 received payload byte-exact through relay re-framing" as *u8, check_payload(out_bufs, CAP, 1, 52, pay1, 50)); total=total+1
49 pass = pass + g_check("peer2 received payload byte-exact through relay re-framing" as *u8, check_payload(out_bufs, CAP, 2, 52, pay1, 50)); total=total+1
50
51 // ---- peer 1 broadcasts a 30-byte payload (now peers 0 and 2 receive, 1 skipped) ----
52 let pay2: *u8 = sys_mmap(30)
53 i=0; while i<30 { pay2[i]=((i*13+7)&255) as u8; i=i+1 }
54 let d2: i64 = quic_relay_broadcast(NP, 1, pay2, 30, out_bufs, CAP, out_lens)
55 var b2: i64=1
56 if d2 != 2 { b2=0 }
57 if out_lens[1] != 52 { b2=0 } // sender unchanged
58 if out_lens[0] != 32 { b2=0 } // DATAGRAM(30) = 32
59 if out_lens[2] != 84 { b2=0 } // 52 + 32
60 pass = pass + g_check("peer1 broadcast: delivered=2, sender unchanged, peers 0&2 accumulate" as *u8, b2); total=total+1
61 pass = pass + g_check("peer0 received peer1's payload byte-exact" as *u8, check_payload(out_bufs, CAP, 0, 32, pay2, 30)); total=total+1
62
63 g_puts("---- quic_relay gate: passed " as *u8); g_pn(pass); g_puts(" / " as *u8); g_pn(total); g_puts(" ----\n" as *u8)
64 if pass == total { g_puts("VERDICT: GREEN (relay datagram fan-out, no echo, FEC payload preserved -- the server-side wire-in core)\n" as *u8); return 0 }
65 g_puts("VERDICT: RED\n" as *u8)
66 return 1
67}