summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorLV-426 <lv-426@taproot.org.il>2015-01-02 17:26:59 +0200
committerLV-426 <lv-426@taproot.org.il>2015-01-02 17:56:27 +0200
commita04a556a86d7c02f44a9bee82453d2d92000287c (patch)
tree681e64b1b9acd7f6035490f0c68e7c0ffd99ccbd /src
parent9a284505f8debcf8a5ec7f06ea5f7eef8798fde1 (diff)
test_rz_mesh.py: practical rewrite, supported test functions:
- test_ws_event__topo_diff() - test_ws_event__attr_diff() - test_REST_post_triggers_ws_multicast__topo_diff()
Diffstat (limited to 'src')
-rw-r--r--src/server-tests/test_rz_mesh.py99
1 files changed, 91 insertions, 8 deletions
diff --git a/src/server-tests/test_rz_mesh.py b/src/server-tests/test_rz_mesh.py
index 9dcec19d..11402004 100644
--- a/src/server-tests/test_rz_mesh.py
+++ b/src/server-tests/test_rz_mesh.py
@@ -3,11 +3,13 @@ import json
import logging
from socketIO_client import SocketIO, BaseNamespace
import unittest
+import urllib2
+import test_util
from model.graph import Topo_Diff
+from model.graph import Attr_Diff
from neo4j_test_util import rand_id
-
class TestMeshAPI(unittest.TestCase):
"""
currently requires a running rhizi server instance
@@ -31,12 +33,56 @@ class TestMeshAPI(unittest.TestCase):
def __enter__(self):
sock = SocketIO('rhizi.local', 8080)
ns_sock = sock.define(self.namespace, '/graph')
+ self.sock = sock
return sock, ns_sock
def __exit__(self, e_type, e_value, e_traceback):
- pass
+ self.sock.disconnect()
+
+ def _emit_tx_topo_diff(self):
+ with TestMeshAPI.rz_socket() as (_, ns_sock):
+ n_set = [{'__label_set': ['xxx'], 'id': rand_id() }]
+ topo_diff = Topo_Diff(node_set_add=n_set)
+ data = json.dumps(topo_diff, cls=Topo_Diff.JSON_Encoder)
+ ns_sock.emit('diff_commit__topo', data)
- def x_test_add_node_set(self):
+ def test_REST_post_triggers_ws_multicast__topo_diff(self):
+
+ class NS_test(BaseNamespace):
+
+ def on_diff_commit__topo(self, json_str):
+ topo_diff = Topo_Diff.from_json_dict(json_str)
+ n_id = topo_diff.node_set_add[0].get('id')
+ greenlet.getcurrent().n_id_received = n_id
+
+ self._transport._connection.send_close() # FIXME: properly close socket, avoid c_1 socket wait
+
+ n = test_util.generate_random_node_dict('test_ws_event__topo_diff')
+ n_id = n['id']
+ topo_diff = Topo_Diff(node_set_add=[n])
+
+ def c_0():
+
+ with TestMeshAPI.rz_socket(namespace=NS_test) as (sock, _):
+ c1_t.switch() # allow peer to POST
+ sock.wait(8) # allow self to receive
+
+ def c_1():
+ data = json.dumps({'topo_diff': topo_diff.to_json_dict()})
+ req = urllib2.Request(url='http://rhizi.local:8080/graph/diff-commit-topo',
+ data=data,
+ headers={'Content-Type': 'application/json'})
+
+ f = urllib2.urlopen(req)
+ f.close()
+ c0_t.switch()
+
+ c0_t = greenlet(c_0)
+ c1_t = greenlet(c_1)
+ c0_t.switch()
+ self.assertEqual(c0_t.n_id_received, n_id)
+
+ def test_ws_event__topo_diff(self):
class NS_test(BaseNamespace):
@@ -45,12 +91,11 @@ class TestMeshAPI(unittest.TestCase):
n_id = todo_diff.node_set_add[0].get('id')
greenlet.getcurrent().n_id_received = n_id
- # FIXME: properly close socket, avoid c_1 socket wait
- self._transport._connection.send_close()
+ self._transport._connection.send_close() # FIXME: properly close socket, avoid c_1 socket wait
- n_id = rand_id()
- n_set = [{'__type': 'xxx', 'id': n_id }]
- topo_diff = Topo_Diff(node_set_add=n_set)
+ n = test_util.generate_random_node_dict('test_ws_event__topo_diff')
+ n_id = n['id']
+ topo_diff = Topo_Diff(node_set_add=[n])
def c_0():
with TestMeshAPI.rz_socket(namespace=NS_test) as (_, ns_sock):
@@ -70,6 +115,44 @@ class TestMeshAPI(unittest.TestCase):
self.assertEqual(c1_t.n_id_received, n_id)
+ def test_ws_event__attr_diff(self):
+
+ class NS_test(BaseNamespace):
+
+ def on_diff_commit__attr(self, json_str):
+ attr_diff = Attr_Diff.from_json_dict(json.loads(json_str))
+ n_id = attr_diff.type_node.node_set_add[0].get('id')
+ greenlet.getcurrent().n_id_received = n_id
+
+ self._transport._connection.send_close() # FIXME: properly close socket, avoid c_1 socket wait
+
+ n = test_util.generate_random_node_dict('test_ws_event__attr_diff')
+ n_id = n['id']
+
+ # apply attr_diff
+ attr_diff = Attr_Diff()
+ attr_diff.add_node_attr_write(n_id, 'attr_0', 0)
+ attr_diff.add_node_attr_write(n_id, 'attr_1', 'a')
+ attr_diff.add_node_attr_rm(n_id, 'attr_2')
+
+ def c_0():
+ with TestMeshAPI.rz_socket(namespace=NS_test) as (_, ns_sock):
+ c1_t.switch() # allow peer to connect
+ data = json.dumps(attr_diff)
+ ns_sock.emit('diff_commit__attr', data)
+ c1_t.switch()
+
+ def c_1():
+ with TestMeshAPI.rz_socket(namespace=NS_test) as (sock, _):
+ c0_t.switch() # allow peer to emit
+ sock.wait(8) # allow self to receive
+
+ c0_t = greenlet(c_0)
+ c1_t = greenlet(c_1)
+ c0_t.switch()
+
+ self.assertEqual(c1_t.n_id_received, n_id)
+
if __name__ == "__main__":
unittest.main()