Files
ARCADIA-Studio/harness/experiments/compact-help-20261001/package/read-model-warnings.py
T

31 lines
1.8 KiB
Python

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))