21 lines
1.2 KiB
Python
21 lines
1.2 KiB
Python
from pathlib import Path
|
|
import http.client,hashlib,json
|
|
release=Path(__file__).resolve().parent
|
|
manifest=json.loads((release/'manifest.json').read_text())
|
|
asset=next(r for r in manifest if '/dist/js/model-catalog-' in r['path'] and r['path'].endswith('.js'))
|
|
path='/' + asset['path'].split('/dist/',1)[1]
|
|
checks=[('/',200,'GET'),('/api/health',200,'GET'),('/api/models',401,'GET'),('/api/models/test',401,'POST'),(path,200,'GET')]
|
|
statuses={}
|
|
for endpoint,wanted,method in checks:
|
|
c=http.client.HTTPConnection('192.168.110.111',8369,timeout=20,source_address=('192.168.123.43',0))
|
|
try:
|
|
c.request(method,endpoint,body=b'{"provider_id":"deployment-probe"}' if method=='POST' else None,headers={'Content-Type':'application/json'})
|
|
response=c.getresponse();data=response.read()
|
|
assert response.status==wanted,(endpoint,response.status)
|
|
if endpoint==path:assert hashlib.sha256(data).hexdigest()==asset['sha256']
|
|
if endpoint=='/':assert data==(release/'payload/admin-web/apps/web-antd/dist/index.html').read_bytes()
|
|
statuses[method+' '+endpoint]=response.status
|
|
finally:c.close()
|
|
(release/'lan-verification.json').write_text(json.dumps(statuses,indent=2),encoding='utf-8')
|
|
print(json.dumps(statuses))
|