nx_hunt_evidence_test.nx source
↩ module page · 46 lines · 2011 B
1// nx_hunt_evidence_test.nx -- smoke for nx_hunt_evidence.
2
3import "nx_syscalls.nx"
4import "nx_hunter.nx"
5import "nx_hunt_evidence.nx"
6
7func main() -> i64 {
8 if NX_EK_N_KINDS != 5 { return 1 }
9 if nx_ek_is_valid(NX_EK_COMMIT_HASH) != 1 { return 2 }
10 if nx_ek_is_valid(5) != 0 { return 3 }
11
12 let l: *NxHuntEvidenceLog = nx_hunt_evidence_log_new(16)
13 if l.count != 0 { return 4 }
14
15 // Record evidence for target 100 (bug-fix commit)
16 nx_hunt_evidence_record(l, 1, 100, NX_EK_COMMIT_HASH, 0xc0ffee, NX_KP_BUG_FIXED, 1000)
17 nx_hunt_evidence_record(l, 2, 100, NX_EK_TEST_FIXTURE, 0xfeed, NX_KP_BUG_FIXED, 1100)
18
19 // And target 200 (EXCEED-axis benchmark)
20 nx_hunt_evidence_record(l, 3, 200, NX_EK_BENCHMARK_OUTPUT, 0xbeef, NX_KP_EXCEED_AXIS_SHIPPED, 2000)
21 nx_hunt_evidence_record(l, 4, 200, NX_EK_FORENSIC_RECORD, 0xface, NX_KP_EXCEED_AXIS_SHIPPED, 2100)
22
23 if l.count != 4 { return 5 }
24 if nx_hunt_evidence_count(l) != 4 { return 6 }
25
26 // Count per target
27 if nx_hunt_evidence_count_for_target(l, 100) != 2 { return 7 }
28 if nx_hunt_evidence_count_for_target(l, 200) != 2 { return 8 }
29 if nx_hunt_evidence_count_for_target(l, 999) != 0 { return 9 }
30
31 // Count per kind
32 if nx_hunt_evidence_count_by_kind(l, NX_EK_COMMIT_HASH) != 1 { return 10 }
33 if nx_hunt_evidence_count_by_kind(l, NX_EK_BENCHMARK_OUTPUT) != 1 { return 11 }
34 if nx_hunt_evidence_count_by_kind(l, NX_EK_CARDINAL_TEXT) != 0 { return 12 }
35
36 // Bad kind rejected
37 if nx_hunt_evidence_record(l, 5, 300, 99, 0, NX_KP_BUG_FIXED, 3000) != NX_HEV_ERR_NOT_FOUND { return 13 }
38
39 // FULL when at capacity
40 let small: *NxHuntEvidenceLog = nx_hunt_evidence_log_new(2)
41 nx_hunt_evidence_record(small, 1, 1, NX_EK_COMMIT_HASH, 0xaa, NX_KP_BUG_FIXED, 1000)
42 nx_hunt_evidence_record(small, 2, 2, NX_EK_COMMIT_HASH, 0xbb, NX_KP_BUG_FIXED, 1000)
43 if nx_hunt_evidence_record(small, 3, 3, NX_EK_COMMIT_HASH, 0xcc, NX_KP_BUG_FIXED, 1000) != NX_HEV_ERR_FULL { return 14 }
44
45 return 0
46}