nx_torrent_bench_test.nx source
↩ module page · 67 lines · 2777 B
1// nx_torrent_bench_test.nx -- KAT for the torrent leaderboard + emits the table to stdout.
2// Native sovereign lane; exit 0 = pass, N = assertion N failed. Prints the leaderboard last.
3
4import "nx_str.nx"
5import "nx_torrent_bench.nx"
6
7func _z(a: *i64, n: i64) -> i64 { var i: i64 = 0; while i < n { a[i] = 0; i = i + 1 } return 0 }
8
9func main() -> i64 {
10 let ph: *i64 = sys_mmap(64 * 8) as *i64
11 let bh: *i64 = sys_mmap(8 * 8) as *i64
12 let have: *i64 = sys_mmap(16 * 8) as *i64
13 let tr: *i64 = sys_mmap(2 * 8) as *i64
14
15 // ---- grade helpers (hand-checked) ----
16 if nx_tb_grade_hib(20, 10) != TB_S { return 1 }
17 if nx_tb_grade_hib(10, 10) != TB_A { return 2 }
18 if nx_tb_grade_hib(4, 10) != TB_D { return 3 }
19 if nx_tb_grade_hib(5, 0) != TB_NA { return 4 }
20 if nx_tb_grade_lib(2, 4) != TB_S { return 5 } // streaming 2x faster to playable
21 if nx_tb_grade_lib(10, 10) != TB_A { return 6 }
22 if nx_tb_grade_lib(5, 0) != TB_NA { return 7 }
23
24 // ---- v2 (BEP-52) hash substrate: SHA-256("abc") KAT ----
25 if nx_tb_v2_hash_ok() != 1 { return 8 }
26
27 // ===== Scenario A (adverse): peer0=STALL[piece2], peer1=HONEST[all], peer2=HONEST[piece2], n=3 =====
28 ph[0]=0; ph[1]=0; ph[2]=1
29 ph[3]=1; ph[4]=1; ph[5]=1
30 ph[6]=0; ph[7]=0; ph[8]=1
31 bh[0]=1; bh[1]=0; bh[2]=0
32
33 // determinism: even an ADVERSE swarm with endgame replays bit-for-bit
34 if nx_tb_determinism_pass(ph, bh, 3, 3, 0, 2, 1, 1, 20) != 1 { return 9 }
35
36 // adverse: naive DNFs, endgame completes in 3 rounds
37 _z(have, 3)
38 let naive_res: i64 = nx_ss_run(ph, bh, 3, 3, have, 0, 2, 0, 1, 20, tr)
39 if naive_res != NX_SS_DNF { return 10 }
40 _z(have, 3)
41 let eg_res: i64 = nx_ss_run(ph, bh, 3, 3, have, 0, 2, 1, 1, 20, tr)
42 if eg_res != 3 { return 11 }
43
44 // ===== Scenario H (honest, skewed avail): peer0=[1,1,1,1] peer1=[1,1,0,0] peer2=[1,0,0,0], n=4 =====
45 _z(ph, 64)
46 ph[0]=1; ph[1]=1; ph[2]=1; ph[3]=1
47 ph[4]=1; ph[5]=1; ph[6]=0; ph[7]=0
48 ph[8]=1; ph[9]=0; ph[10]=0; ph[11]=0
49 bh[0]=0; bh[1]=0; bh[2]=0
50
51 // streaming reaches in-order playable (lookahead 2) at round 2; rarest only at round 4
52 _z(have, 4)
53 let play_stream: i64 = nx_ss_rounds_to_playable(ph, bh, 3, 4, have, 1, 2, 2, 50)
54 if play_stream != 2 { return 12 }
55 _z(have, 4)
56 let play_rarest: i64 = nx_ss_rounds_to_playable(ph, bh, 3, 4, have, 0, 2, 2, 50)
57 if play_rarest != 4 { return 13 }
58
59 // determinism on the honest scenario too
60 if nx_tb_determinism_pass(ph, bh, 3, 4, 0, 2, 0, 1, 50) != 1 { return 14 }
61 let det_pass: i64 = 1
62
63 // ---- emit the leaderboard (informational; gate already proven by the asserts above) ----
64 nx_tb_emit(1, det_pass, naive_res, eg_res, play_stream, play_rarest, 1)
65
66 return 0
67}