code wiki / (root) / nx_torrent_bench_test.nx

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}