nx_site_publish_multi_gate_t322.nx source
↩ module page · 44 lines · 5144 B
1// Native isolated-store integration with four exact real motion artifacts.
2import "nx_site_publish_multi_candidate_t322.nx"
3func r2g_same(path:*u8,expected:*u8,n:i64)->i64{
4 let b:*u8=sys_mmap_try(n+1);if (b as i64)<=0{return 0};let got:i64=pb_read_bounded(path,b,n+1);let rc:i64=pb_same_bytes(b,got,expected,n);sys_munmap(b,n+1);return rc
5}
6func r2g_ok(name:*u8,ok:i64)->i64{fsx_puts(name);if ok==1{fsx_puts(" PASS\n");return 0};fsx_puts(" FAIL\n");return 1}
7func main(argc:i64,argv:*i64)->i64{
8 if argc!=4{return 2};let len:*i64=sys_mmap(8) as *i64;let body:*u8=sys_read_file(argv[2] as *u8,len);if (body as i64)<=0{return 3}
9 let v:*i64=sys_mmap(RM_VALUES_BYTES) as *i64;let st:*i64=sys_mmap(RM2_STATE_WORDS*8) as *i64;let prefix:*u8=sys_mmap(PB_PATH);let digest:*u8=sys_mmap(PB_SHA_HEX+1)
10 var i:i64=0;while i<RM_FIELDS{v[i]=0;i=i+1};i=0;while i<RM2_STATE_WORDS{st[i]=0;i=i+1};pb_hash(body,len[0],digest)
11 if r2g_ok("parse-v2-four-assets",(rm2_parse(body,len[0],v,st)==0&&st[1]==4) as i64)!=0{return 10}
12 if sys_mkdir(argv[1] as *u8,0x1ed)!=0||sys_chdir(argv[1] as *u8)!=0{return 4}
13 let logfd:i64=sys_openat_wr("qualification-full.log",FSX_MODE_RW);if logfd<0||sys_dup3(logfd,1,0)!=1{return 4};sys_close(logfd)
14 sys_mkdir("sites",0x1ed);sys_mkdir("sites/gatesite",0x1ed);sys_mkdir("sites/gatesite/releases",0x1ed);sys_mkdir("knowledge",0x1ed);sys_mkdir("knowledge/gates",0x1ed)
15 let conf:*u8="gatesite\tsites/gatesite\tknowledge/pub-\thttps://example.invalid\tGate\tprivate/\n"
16 if ss_writefile("knowledge/pub_sites.conf",conf,ss_len(conf))!=0{return 5}
17 let row:*i64=ss_begin_cap(64);ss_add(row,1,"q:n","0",1);if ss_commit("knowledge/pub-",row,ss_next_segid("knowledge/pub-"))!=0{return 5}
18 if pl_register_asset("knowledge/pub-","index.html","multi dependency publication fixture")!=1{return 5}
19 let old:*u8="old consumer\n";if fsx_write("sites/gatesite/index.html",old,vw_slen(old))!=vw_slen(old){return 5}
20 let initial:i64=ss_max_segid("knowledge/pub-");var last:*i64=st[0] as *i64;while last[4]!=0{last=last[4] as *i64};let savedhash:i64=last[2];last[2]="aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa" as *u8 as i64
21 if r2g_ok("last-source-hash-refused-before-registration",(rm2_preflight(v,st,prefix)==PB_RC_CONFLICT&&ss_max_segid("knowledge/pub-")==initial) as i64)!=0{return 11};last[2]=savedhash
22 let first:*i64=st[0] as *i64;let savedpath:i64=last[1];last[1]=first[1]
23 if r2g_ok("duplicate-dependency-path-refused",(rm2_preflight(v,st,prefix)==PB_RC_CONFLICT) as i64)!=0{return 12};last[1]=savedpath
24 let savedlive:i64=v[6];v[6]="aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa" as *u8 as i64
25 if r2g_ok("stale-live-refused-before-registration",(rm2_preflight(v,st,prefix)==PB_RC_CONFLICT&&ss_max_segid("knowledge/pub-")==initial) as i64)!=0{return 13};v[6]=savedlive
26 let prepared:i64=rm2_preflight(v,st,prefix)
27 if r2g_ok("all-preflight-readonly",(prepared==0&&ss_max_segid("knowledge/pub-")==initial&&r2g_same("sites/gatesite/index.html",old,vw_slen(old))==1) as i64)!=0{return 14}
28 let args:*i64=sys_mmap(40) as *i64;args[0]="nx_site_publish" as *u8 as i64;args[1]="release-manifest" as *u8 as i64;args[2]=argv[2];args[3]=digest as i64;args[4]=0
29 let failed:i64=rm2_main(4,args)
30 if r2g_ok("late-fourth-stage-fails-consumer-unchanged",(failed==FSX_RC_IO&&r2g_same("sites/gatesite/index.html",old,vw_slen(old))==1) as i64)!=0{return 15}
31 var d:*i64=st[0] as *i64;i=0;while i<3{let path:*u8=rm2_path(v[1] as *u8,d[1] as *u8);if rm2_existing(path,d[3] as *u8,d[2] as *u8)!=0{return 16};sys_munmap(path,PB_PATH);d=d[4] as *i64;i=i+1}
32 if r2g_ok("first-three-real-assets-retained",1)!=0{return 16}
33 let gen:i64=ss_max_segid("knowledge/pub-");if sys_mkdir("sites/gatesite/releases/late",0x1ed)!=0{return 17}
34 if r2g_ok("retry-publishes-once-after-all-four-staged",(rm2_main(4,args)==0) as i64)!=0{return 18}
35 let candidate:*i64=sys_mmap(16) as *i64;if rm_artifact(v[2] as *u8,v[5] as *u8,v[4] as *u8,candidate)!=0{return 19}
36 if r2g_ok("consumer-and-prior-exact",(r2g_same("sites/gatesite/index.html",candidate[0] as *u8,candidate[1])==1&&r2g_same("sites/gatesite/index.html.prev",old,vw_slen(old))==1) as i64)!=0{return 19}
37 d=st[0] as *i64;while (d as i64)!=0{let path:*u8=rm2_path(v[1] as *u8,d[1] as *u8);if rm2_existing(path,d[3] as *u8,d[2] as *u8)!=0{return 20};sys_munmap(path,PB_PATH);d=d[4] as *i64}
38 if r2g_ok("all-four-staged-exact",1)!=0{return 20}
39 if r2g_ok("retry-idempotent-prior-and-registry",(rm2_main(4,args)==0&&ss_max_segid("knowledge/pub-")==gen&&r2g_same("sites/gatesite/index.html.prev",old,vw_slen(old))==1) as i64)!=0{return 21}
40 let one:*i64=rm2_view(v,first);if r2g_ok("v1-preflight-contract-retained",(rm_preflight(one,prefix)==0) as i64)!=0{return 22}
41 let large:*i64=sys_mmap(16) as *i64;if rm2_load(argv[3] as *u8,large)!=0{return 23};pb_hash(large[0] as *u8,large[1],digest);args[1]="prepare-release" as *u8 as i64;args[2]=argv[3];args[3]=digest as i64
42 if r2g_ok("manifest-larger-than-old-cap",(large[1]>PB_CONFCAP&&rm2_main(4,args)==0) as i64)!=0{return 23}
43 fsx_puts("MULTI-RELEASE 13/13 real4assets, isolated store; no production publication\n");return 0
44}