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}