nx_shard_writer_test.nx source
↩ module page · 50 lines · 1934 B
1// nx_shard_writer_test.nx -- smoke for size-rotating output writer.
2
3import "nx_syscalls.nx"
4import "nx_tier.nx"
5import "nx_shard_writer.nx"
6
7func main() -> nx_exit {
8 let prefix: *u8 = "/tmp/nxshardw_t1" as *u8
9
10 let w: *NxShardWriter = nx_shard_writer_open(prefix, 50 as nx_size)
11 if w == (0 as *NxShardWriter) { return 11 }
12 if nx_shard_writer_shard_index(w) != 0 { return 12 }
13 if nx_shard_writer_total_records(w) != 0 { return 13 }
14 if nx_shard_writer_total_bytes(w) != 0 { return 14 }
15 if nx_shard_writer_current_bytes(w) != 0 { return 15 }
16 if nx_shard_writer_n_shards(w) != 1 { return 16 }
17
18 let r1: *u8 = "ten_bytes_" as *u8
19 let n1: nx_int = nx_shard_writer_emit(w, r1, 10 as nx_size)
20 if n1 != 11 { return 21 }
21 if nx_shard_writer_current_bytes(w) != 11 { return 22 }
22 if nx_shard_writer_total_records(w) != 1 { return 23 }
23 if nx_shard_writer_shard_index(w) != 0 { return 24 }
24
25 let r2: *u8 = "more_data_" as *u8
26 let n2: nx_int = nx_shard_writer_emit(w, r2, 10 as nx_size)
27 if n2 != 11 { return 31 }
28 if nx_shard_writer_current_bytes(w) != 22 { return 32 }
29 if nx_shard_writer_shard_index(w) != 0 { return 33 }
30 if nx_shard_writer_total_records(w) != 2 { return 34 }
31
32 let r3: *u8 = "0123456789012345678901234567890123456789" as *u8
33 let n3: nx_int = nx_shard_writer_emit(w, r3, 40 as nx_size)
34 if n3 != 41 { return 41 }
35 if nx_shard_writer_shard_index(w) != 1 { return 42 }
36 if nx_shard_writer_current_bytes(w) != 41 { return 43 }
37 if nx_shard_writer_total_records(w) != 3 { return 44 }
38
39 if nx_shard_writer_total_bytes(w) != 63 { return 51 }
40 if nx_shard_writer_n_shards(w) != 2 { return 52 }
41
42 nx_shard_writer_close(w)
43 let n4: nx_int = nx_shard_writer_emit(w, r1, 10 as nx_size)
44 if n4 != NX_SHARDW_CLOSED { return 61 }
45
46 let cc: nx_int = nx_shard_writer_close(w)
47 if cc != NX_SHARDW_OK { return 71 }
48
49 return 0
50}