diff options
| author | Scott Moser <smoser@brickies.net> | 2017-11-03 16:44:31 (GMT) |
|---|---|---|
| committer | Scott Moser <smoser@brickies.net> | 2017-11-03 16:44:31 (GMT) |
| commit | ce69c59a0a6cbf03fce209bc734d93c286a34c01 (patch) | |
| tree | 366b1daf653ffe038f74ab0ce9ca784d791467b4 | |
| parent | d373e5f160a4b941bd957068296f9133436ba0ea (diff) | |
somewhat functional.feature/json-socket-server
server run with:
python3 -m tests.cloud_tests.jsoncket --port 9799
Then run a client like:
python -m tests.cloud_tests.jsoncket.client localhost 9799 ls
| -rw-r--r-- | tests/cloud_tests/jsoncket/__init__.py | 18 | ||||
| -rw-r--r-- | tests/cloud_tests/jsoncket/client.py | 5 |
2 files changed, 18 insertions, 5 deletions
diff --git a/tests/cloud_tests/jsoncket/__init__.py b/tests/cloud_tests/jsoncket/__init__.py index c9a77a2..4e4ca9f 100644 --- a/tests/cloud_tests/jsoncket/__init__.py +++ b/tests/cloud_tests/jsoncket/__init__.py @@ -91,11 +91,18 @@ def clientthread(conn): # Sending message to connected client while True: # Receiving from client - data = read_msg(conn.recv) - print("got data=%s" % data) - if not data: + msg = read_msg(conn.recv) + print("got data=%s" % msg) + if not msg: break + try: + data = json.loads(msg) + except ValueError: + send_msg(conn.send, + {'result': "ERROR", 'msg': "Data was not json"}) + continue + if isinstance(data, dict): if data.get('op') == 'exec': out, err, exit_code = execute(data.get('cmd')) @@ -104,7 +111,10 @@ def clientthread(conn): result = {'result': "OK"} result.update(data) else: - result = {'result': "ERROR", 'msg': "Bad Data type"} + send_msg(conn.send, + {'result': "ERROR", + 'msg': "Bad operation: %s" % data.get('op')}) + continue send_msg(conn.send, result) diff --git a/tests/cloud_tests/jsoncket/client.py b/tests/cloud_tests/jsoncket/client.py index 5b7ca1c..5182fe8 100644 --- a/tests/cloud_tests/jsoncket/client.py +++ b/tests/cloud_tests/jsoncket/client.py @@ -42,7 +42,10 @@ if __name__ == "__main__": try: for command in args.commands: - data = json.loads(command) + if command.startswith("{"): + data = json.loads(command) + else: + data = json.dumps({'op': 'exec', 'cmd': command.split()}) print("send=%s" % data) ret = send_receive_msg(client, data) print("ret=%s" % ret) |
