code wiki / (root) / nx_net_governor_test.nx

nx_net_governor_test.nx source

↩ module page · 33 lines · 1142 B

1// nx_net_governor_test.nx -- KAT for the general network governor. 2// Native sovereign lane; exit 0 = pass, N = assertion N failed. 3// Deterministic: explicit clock values. 4 5import "nx_net_governor.nx" 6 7func main() -> i64 { 8 let g: *NxNetGov = sys_mmap(NX_NETGOV_BYTES) as *NxNetGov 9 nx_gov_init(g, 1000, 5, 10000, 4096) 10 11 if nx_gov_can_fetch(g) != 1 { return 1 } 12 if nx_gov_wait_ms(g, 0) != 0 { return 2 } 13 if nx_gov_resp_cap(g) != 4096 { return 3 } 14 15 nx_gov_record(g, 0, 2000) 16 if nx_gov_wait_ms(g, 500) != 500 { return 4 } // global pacing 17 if nx_gov_wait_ms(g, 1000) != 0 { return 5 } 18 if nx_gov_wait_ms(g, 1500) != 0 { return 6 } 19 20 nx_gov_record(g, 1000, 1000) 21 nx_gov_record(g, 2000, 1000) 22 nx_gov_record(g, 3000, 1000) 23 if nx_gov_can_fetch(g) != 1 { return 7 } 24 nx_gov_record(g, 4000, 1000) 25 if nx_gov_can_fetch(g) != 0 { return 8 } // request cap 26 27 let g2: *NxNetGov = sys_mmap(NX_NETGOV_BYTES) as *NxNetGov 28 nx_gov_init(g2, 500, 1000, 5000, 4096) 29 nx_gov_record(g2, 0, 6000) 30 if nx_gov_can_fetch(g2) != 0 { return 9 } // byte budget 31 32 return 0 33}