Release Vulpes OS 2.7-preview.22
This commit is contained in:
parent
200d1fb235
commit
a138f97877
294 changed files with 515786 additions and 187 deletions
32
tools/test-unix-control.py
Normal file
32
tools/test-unix-control.py
Normal file
|
|
@ -0,0 +1,32 @@
|
|||
#!/usr/bin/env python3
|
||||
"""Exercise Gecko's bounded Unix-socket transport against a local test broker."""
|
||||
import json,socket,tempfile,threading,time
|
||||
from pathlib import Path
|
||||
from marionette_client import Client
|
||||
|
||||
def check(response,limit=65536,timeout=1000,stall=False):
|
||||
with tempfile.TemporaryDirectory(prefix='vulpes-socket-') as tmp:
|
||||
path=str(Path(tmp)/'broker.sock');server=socket.socket(socket.AF_UNIX);server.bind(path);server.listen(1)
|
||||
received=[]
|
||||
def serve():
|
||||
with server,server.accept()[0] as conn:
|
||||
received.append(json.loads(conn.makefile('rb').readline()))
|
||||
if stall:time.sleep(.3);return
|
||||
for b in response:
|
||||
try:conn.sendall(bytes([b]))
|
||||
except BrokenPipeError:break
|
||||
thread=threading.Thread(target=serve);thread.start()
|
||||
with Client(2857) as client:
|
||||
result=client.call('WebDriver:ExecuteAsyncScript',{'script':"const done=arguments[arguments.length-1];const {exchange}=ChromeUtils.importESModule('resource://vulpes/host/UnixControl.sys.mjs');exchange("+json.dumps(path)+",{operation:'status',label:'été'},"+str(limit)+','+str(timeout)+").then(value=>done({value}),error=>done({error:String(error)}));",'args':[],'newSandbox':True,'sandbox':'system','scriptTimeout':5000})['value']
|
||||
thread.join();assert received==[{'operation':'status','label':'été'}],received
|
||||
return result
|
||||
results={}
|
||||
results['fragmented_utf8']=check('{"ok":true,"result":"été"}\n'.encode())
|
||||
assert results['fragmented_utf8']=={'value':{'ok':True,'result':'été'}},results
|
||||
results['bounded']=check(b'x'*100+b'\n',limit=32)
|
||||
assert 'BROKER_REPLY_TOO_LARGE' in results['bounded']['error'],results
|
||||
results['timeout']=check(b'',timeout=80,stall=True)
|
||||
assert 'BROKER_TIMEOUT' in results['timeout']['error'],results
|
||||
results['truncated']=check(b'{"ok":')
|
||||
assert 'error' in results['truncated'],results
|
||||
print(json.dumps(results,indent=2,ensure_ascii=False))
|
||||
Loading…
Reference in a new issue