code wiki / (root) / nx_shard_writer_test.nx

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}