nx_seg_index_bounds_gate.nx source
↩ module page · 42 lines · 2387 B
1// Index reader boundary qualification using a real writer-generated NXK1 index.
2import "nx_seg_store.nx"
3import "nx_gate_verdict.nx"
4func main(argc: i64, argv: *i64) -> i64 {
5 let ctr: *i64=gv_ctr()
6 let plan: *i64=gv_plan_new("writer-index-size\nvalid-hit\nvalid-miss\nshort-header\nwrong-signature\ncount-overflow\noffset-outside-file\nentry-truncated\nkey-length-overflow\ninvalid-kind\nrestored-hit\n" as *u8)
7 let key: *u8="a" as *u8
8 let val: *u8="v" as *u8
9 let w: *i64=ss_begin_cap(ss_len(key)+ss_len(val)+16)
10 if ss_add(w,1,key,val,ss_len(val)) < 0 { return 2 }
11 let bytes: i64=SS_IDX_HEADER+SS_IDX_U32+SS_IDX_ENTRY_FIXED+ss_len(key)
12 let b: *u8=sys_mmap(bytes)
13 let n: i64=ss_build_keys(w,b)
14 let out: *i64=sys_mmap(2*8) as *i64
15 let len: *i64=((out as i64)+8) as *i64
16 gv_plan_check(plan,"writer-index-size" as *u8,n==bytes,ctr)
17 gv_plan_check(plan,"valid-hit" as *u8,ss_idx_find(b,n,key,out,len)==1,ctr)
18 gv_plan_check(plan,"valid-miss" as *u8,ss_idx_find(b,n,"z" as *u8,out,len)==(0-1),ctr)
19 gv_plan_check(plan,"short-header" as *u8,ss_idx_find(b,SS_IDX_HEADER-1,key,out,len)==(0-2),ctr)
20 b[1]=0 as u8
21 gv_plan_check(plan,"wrong-signature" as *u8,ss_idx_find(b,n,key,out,len)==(0-2),ctr)
22 b[1]=88 as u8
23 ss_w32(b,SS_IDX_U32,4294967295)
24 gv_plan_check(plan,"count-overflow" as *u8,ss_idx_find(b,n,key,out,len)==(0-2),ctr)
25 ss_w32(b,SS_IDX_U32,1)
26 ss_w32(b,SS_IDX_HEADER,4294967295)
27 gv_plan_check(plan,"offset-outside-file" as *u8,ss_idx_find(b,n,key,out,len)==(0-2),ctr)
28 ss_w32(b,SS_IDX_HEADER,0)
29 let entry: i64=SS_IDX_HEADER+SS_IDX_U32
30 gv_plan_check(plan,"entry-truncated" as *u8,ss_idx_find(b,entry+SS_IDX_ENTRY_FIXED-1,key,out,len)==(0-2),ctr)
31 ss_w32(b,entry+1,4294967295)
32 gv_plan_check(plan,"key-length-overflow" as *u8,ss_idx_find(b,n,key,out,len)==(0-2),ctr)
33 ss_w32(b,entry+1,ss_len(key))
34 b[entry]=3 as u8
35 gv_plan_check(plan,"invalid-kind" as *u8,ss_idx_find(b,n,key,out,len)==(0-2),ctr)
36 b[entry]=1 as u8
37 gv_plan_check(plan,"restored-hit" as *u8,ss_idx_find(b,n,key,out,len)==1,ctr)
38 gv_plan_finish(plan,ctr)
39 sys_munmap(b,bytes);sys_munmap(out as *u8,2*8)
40 sys_munmap(w[0] as *u8,w[2]);sys_munmap(w as *u8,32)
41 return gv_verdict("SEG-INDEX-BOUNDS" as *u8,ctr,"Bounds at every probed offset; not a full ordering or authenticity proof." as *u8)
42}