import os
import socket
import subprocess
import sys
import time
python_dir = os.path.join(os.path.dirname(__file__))
def run_subprocesses(client, args):
env = os.environ
env['RUST_LOG'] = 'info,hid_io_core::api=trace'
path = os.path.abspath(os.path.join(python_dir, '..', '..'))
server = subprocess.Popen(['cargo', 'run'], env=env, cwd=path)
addr, port = ('localhost', 7185)
retries = 30
while True:
sock = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
result = sock.connect_ex((addr, port))
if result == 0:
break
sock = socket.socket(socket.AF_INET6, socket.SOCK_STREAM)
result = sock.connect_ex((addr, port))
if result == 0:
break
time.sleep(1)
retries -= 1
if retries == 0:
assert False, "Timed out waiting for server to start"
client_args = [sys.executable, os.path.join(python_dir, client)]
client_args.extend(args)
client = subprocess.Popen(client_args)
ret = client.wait()
server.kill()
assert ret == 0, "Client did not return 0"
def test_example():
client = 'example.py'
args = ['--single']
run_subprocesses(client, args)