summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorScott Moser <smoser@brickies.net>2017-11-03 16:44:31 (GMT)
committerScott Moser <smoser@brickies.net>2017-11-03 16:44:31 (GMT)
commitce69c59a0a6cbf03fce209bc734d93c286a34c01 (patch)
tree366b1daf653ffe038f74ab0ce9ca784d791467b4
parentd373e5f160a4b941bd957068296f9133436ba0ea (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__.py18
-rw-r--r--tests/cloud_tests/jsoncket/client.py5
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)