mbed-os/workspace_tools/client.py

56 lines
1.4 KiB
Python

import json
from socket import *
from workspace_tools.settings import *
def get_server_connection():
sock = socket(AF_INET, SOCK_STREAM)
sock.connect((SERVER_ADDRESS, SERVER_PORT))
return sock
def get_muts():
# Get the data structure about the Mbed Under Test provided by this server
sock = get_server_connection()
sock.send(json.dumps({"info":"muts"}))
muts = sock.recv(1024)
return json.loads(muts)
def request_test(mcu, image_path, test_id, duration=10):
"""
The test_id needs to be provided only for an automated test the server will
load the correspondent Checker class and will return a json report at the
end of the test
"""
test_spec = {
"mcu": mcu,
"image": image_path,
"duration": duration,
"test_id": test_id,
}
sock = get_server_connection()
sock.send(json.dumps(test_spec))
report_buffer = []
try:
while True:
# Here we do not worry about efficiency the most important feature
# for the developer in front of the terminal is responsiveness
c = sock.recv(1)
if not c: break
report_buffer.append(c)
except KeyboardInterrupt, _:
print "\n[CTRL+c] closing connection"
sock.send("!")
print '\nTest completed'
sock.close()
try:
return json.loads(''.join(report_buffer))
except Exception, _:
return {"result": "error"}