code wiki / (root) / nx_checkpoint_test.nx

nx_checkpoint_test.nx source

↩ module page · 43 lines · 1576 B

1// nx_checkpoint_test.nx -- smoke for atomic resumable checkpoint. 2 3import "nx_syscalls.nx" 4import "nx_tier.nx" 5import "nx_checkpoint.nx" 6 7func main() -> nx_exit { 8 let path: *u8 = "/tmp/nx_ckpt_t1.txt" as *u8 9 10 let cp0: *NxCheckpoint = nx_checkpoint_open(path) 11 if cp0 == (0 as *NxCheckpoint) { return 90 } 12 nx_checkpoint_set(cp0, 0) 13 nx_checkpoint_close(cp0) 14 15 let fresh_path: *u8 = "/tmp/nx_ckpt_never_written_xyz.txt" as *u8 16 let cp_fresh: *NxCheckpoint = nx_checkpoint_open(fresh_path) 17 if cp_fresh == (0 as *NxCheckpoint) { return 91 } 18 if nx_checkpoint_get(cp_fresh) != NX_CHECKPOINT_FRESH { return 11 } 19 if nx_checkpoint_is_fresh(cp_fresh) != 1 { return 12 } 20 21 let cp: *NxCheckpoint = nx_checkpoint_open(path) 22 if cp == (0 as *NxCheckpoint) { return 92 } 23 let r1: nx_int = nx_checkpoint_set(cp, 743012) 24 if r1 != 0 { return 21 } 25 if nx_checkpoint_get(cp) != 743012 { return 22 } 26 if nx_checkpoint_is_fresh(cp) != 0 { return 23 } 27 28 if nx_checkpoint_set(cp, 800000) != 0 { return 31 } 29 if nx_checkpoint_get(cp) != 800000 { return 32 } 30 if nx_checkpoint_set(cp, 1234567) != 0 { return 33 } 31 if nx_checkpoint_get(cp) != 1234567 { return 34 } 32 33 nx_checkpoint_close(cp) 34 let cp2: *NxCheckpoint = nx_checkpoint_open(path) 35 if cp2 == (0 as *NxCheckpoint) { return 93 } 36 if nx_checkpoint_get(cp2) != 1234567 { return 41 } 37 if nx_checkpoint_is_fresh(cp2) != 0 { return 42 } 38 39 if nx_checkpoint_n_writes(cp2) != 0 { return 51 } 40 if nx_checkpoint_n_write_fail(cp2) != 0 { return 52 } 41 42 return 0 43}