code wiki / (root) / nx_site_publish_multi_canonical_gate_t322.nx

nx_site_publish_multi_canonical_gate_t322.nx source

↩ module page · 44 lines · 5127 B

1// Native isolated-store integration with four exact real motion artifacts. 2import "nx_site_publish_lib.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}