probe_blob_journal.nx source
↩ module page · 59 lines · 1683 B
1// Minimal probe: verify blob_store + journal_log APIs
2import "nx_syscalls.nx"
3import "nx_blob_store.nx"
4import "nx_journal_log.nx"
5
6func main() -> i64 {
7 // Test blob store
8 let bs: *NxBlobStore = nx_blob_store_new()
9
10 // Put a simple byte string
11 let data: *u8 = sys_mmap(10)
12 data[0] = 72
13 data[1] = 105
14 data[2] = 0
15
16 let hash: *NxBlobHash = nx_blob_hash_new()
17 let rc_put: i64 = nx_blob_store_put(bs, data, 3, hash)
18 if rc_put != 0 { return 1 }
19
20 // Verify get works
21 let buf: *u8 = sys_mmap(10)
22 let rc_get: i64 = nx_blob_store_get(bs, hash, buf, 10)
23 if rc_get != 3 { return 2 }
24 if buf[0] != 72 { return 3 }
25
26 // Test journal log
27 let jl: *NxJournalLog = nx_journal_log_new(bs)
28
29 // Append an entry
30 let payload: *u8 = sys_mmap(5)
31 payload[0] = 70
32 payload[1] = 97
33 payload[2] = 99
34 payload[3] = 116
35
36 let seq: i64 = nx_journal_log_append(jl, payload, 4, 42)
37 if seq < 0 { return 4 }
38
39 // Read it back
40 let read_buf: *u8 = sys_mmap(10)
41 let read_schema: *i64 = sys_mmap(8) as *i64
42 let rc_read: i64 = nx_journal_log_read(jl, 0, read_buf, 10, read_schema)
43 if rc_read != 4 { return 5 }
44 if *read_schema != 42 { return 6 }
45
46 // Verify chain
47 let rc_verify: i64 = nx_journal_log_verify_chain(jl)
48 if rc_verify != -1 { return 7 }
49
50 // Get latest hash
51 let w0: *i64 = sys_mmap(8) as *i64
52 let w1: *i64 = sys_mmap(8) as *i64
53 let w2: *i64 = sys_mmap(8) as *i64
54 let w3: *i64 = sys_mmap(8) as *i64
55 let rc_latest: i64 = nx_journal_log_latest_hash(jl, w0, w1, w2, w3)
56 if rc_latest != 0 { return 8 }
57
58 return 0
59}