code wiki / (root) / nx_job_put_error_gate.nx

nx_job_put_error_gate.nx source

↩ module page · 38 lines · 2572 B

1import "nx_tools_api.nx" 2import "nx_gate_verdict.nx" 3func jpg_equal(path: *u8, expected: *u8, n: i64) -> i64 { 4 let lp: *i64 = sys_mmap(16) as *i64 5 let actual: *u8 = sys_read_file(path, lp) 6 if (actual as i64) == 0 { return 0 } 7 if lp[0] != n { return 0 } 8 var i: i64 = 0 9 while i < n { if actual[i] != expected[i] { return 0 } i = i + 1 } 10 return 1 11} 12func main(argc: i64, argv: *i64) -> i64 { 13 let ctr: *i64 = gv_ctr() 14 gv_head("nx_job_put_error_gate") 15 // Dedicated scratch fixtures: this gate must be serialized. 16 let out: *u8 = "/tmp/nishi_job_put_20260909.fixture" 17 let temp: *u8 = "/tmp/nishi_job_put_20260909.marker" 18 let claim: *u8 = "/tmp/nishi_job_put_20260909.claim" 19 let content: *u8 = "receipt-test" 20 let marker: *u8 = "state=DONE" 21 let pending: *u8 = "CLAIMED" 22 gv_check("regular write succeeds", (ta_job_put(out, content, 12) == 0) as i64, ctr) 23 gv_check("regular readback matches payload", jpg_equal(out, content, 12), ctr) 24 gv_check("full-device write error propagated", (ta_job_put("/dev/full", content, 12) < 0) as i64, ctr) 25 gv_check("invalid path error propagated", (ta_job_put("/dev/null/not-a-directory", content, 12) < 0) as i64, ctr) 26 gv_check("negative length rejected", (ta_job_put(out, content, 0 - 1) < 0) as i64, ctr) 27 gv_check("claim fixture initialized", (ta_job_put(claim, pending, 7) == 0) as i64, ctr) 28 gv_check("output failure rejects publication", (ta_job_publish("/dev/full", content, 12, temp, marker, 10, claim) < 0) as i64, ctr) 29 gv_check("output failure retains unresolved claim", jpg_equal(claim, pending, 7), ctr) 30 gv_check("marker failure rejects publication", (ta_job_publish(out, content, 12, "/dev/full", marker, 10, claim) < 0) as i64, ctr) 31 gv_check("marker failure retains unresolved claim", jpg_equal(claim, pending, 7), ctr) 32 gv_check("rename failure rejects publication", (ta_job_publish(out, content, 12, temp, marker, 10, "/dev/null/not-a-directory") < 0) as i64, ctr) 33 gv_check("rename failure retains staged marker", jpg_equal(temp, marker, 10), ctr) 34 gv_check("complete publication succeeds", (ta_job_publish(out, content, 12, temp, marker, 10, claim) == 0) as i64, ctr) 35 gv_check("published output matches payload", jpg_equal(out, content, 12), ctr) 36 gv_check("published completion marker matches", jpg_equal(claim, marker, 10), ctr) 37 return gv_verdict("nx_job_put_error_gate", ctr, "real filesystem publication ordering and kernel failure paths; crash durability and abandoned-claim recovery remain unverified") 38}