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}