from pathlib import Path import http.client,json,os,socket,subprocess,time root=Path(__file__).resolve().parent proof=json.loads((root/'extraction-check.json').read_text(encoding='utf-8')) prior=json.loads((root/'native-model-oracle/result.json').read_text(encoding='utf-8')) run=root/'model-warnings';run.mkdir(exist_ok=False) exe=Path(proof['bundle'])/'arcadia-server.exe' env=os.environ.copy();system=os.environ['SystemRoot'];env['PATH']=system+'/System32;'+system for k in list(env): if k.startswith(('CARGO_','RUST','LLVM','WGPU','ARCADIA_')):del env[k] with socket.socket() as s:s.bind(('127.0.0.1',0));port=s.getsockname()[1] cmd=[str(exe),'--bind',f'127.0.0.1:{port}','--data-dir',str(root/'native-model-oracle/store')] records=[] with (run/'stdout.log').open('xb') as out,(run/'stderr.log').open('xb') as err: p=subprocess.Popen(cmd,cwd=run,env=env,stdout=out,stderr=err,creationflags=subprocess.CREATE_NO_WINDOW) try: for _ in range(100): assert p.poll() is None try: with socket.create_connection(('127.0.0.1',port),timeout=.1):break except OSError:time.sleep(.1) for label,rid in zip(['pristine','saved'],prior['resource_ids']): path='/api/v1/projects/'+rid+'/validation' c=http.client.HTTPConnection('127.0.0.1',port,timeout=10);c.request('GET',path,headers={'Connection':'close'}) r=c.getresponse();data=r.read();assert r.status==200;c.close() (run/(label+'.json')).write_bytes(data) records.append({'label':label,'path':path,'response':json.loads(data)}) finally:p.terminate();code=p.wait(timeout=15) (run/'result.json').write_text(json.dumps({'command':cmd,'pid':p.pid,'exit':code,'records':records},indent=2)+'\n',encoding='utf-8') print(json.dumps(records,indent=2,ensure_ascii=True))