def test_actor_functions(self): self.q = Queue.Queue() def cb(key, value): self.q.put({"key": key, "value": value}) yield threads.defer_to_thread(time.sleep, 2) port1 = TestPort("out", "out") port2 = TestPort("in", "in", ) port1.peers = [("local", port2.id)] port2.peers = [("local", port1.id)] actor = TestActor("actor1", "type1", {}, {port1.name: port1}) yield threads.defer_to_thread(self.storage.add_actor, actor, calvinuuid.uuid("NODE"), cb=CalvinCB(cb)) yield threads.defer_to_thread(time.sleep, 2) value = self.q.get(timeout=0.2) assert value["value"] is True yield threads.defer_to_thread(self.storage.get_actor, actor.id, cb=CalvinCB(cb)) yield threads.defer_to_thread(time.sleep, 2) value = self.q.get(timeout=0.2) assert value["value"]["name"] == actor.name yield threads.defer_to_thread(self.storage.delete_actor, actor.id, cb=CalvinCB(cb)) yield threads.defer_to_thread(time.sleep, 2) value = self.q.get(timeout=0.2) assert value["value"] is True yield threads.defer_to_thread(self.storage.get_actor, actor.id, cb=CalvinCB(cb)) yield threads.defer_to_thread(time.sleep, 2) value = self.q.get(timeout=0.2) assert value["value"] is None
def test_connections(): node = DummyNode() node.id = "node_id" actor = create_actor(node) inport = actor.inports['token'] outport = actor.outports['token'] in_peer_port = TestPort("x", "out") out_peer_port = TestPort("y", "in") out_peer_port.queue.add_reader(out_peer_port.id, {}) in_peer_port.queue.add_reader(inport.id, {}) inport.attach_endpoint(LocalInEndpoint(inport, in_peer_port)) outport.attach_endpoint(LocalOutEndpoint(outport, out_peer_port)) assert actor.connections(node) == { 'actor_id': actor.id, 'actor_name': actor.name, 'inports': { inport.id: [(node, in_peer_port.id)] }, 'outports': { outport.id: [(node, out_peer_port.id)] } }
def test_actor_and_port_functions(self): self.q = Queue.Queue() def cb(key, value): self.q.put({"key": key, "value": value}) port1 = TestPort("out", "out") port2 = TestPort("in", "in", ) port1.peers = [("local", port2.id)] port2.peers = [("local", port1.id)] actor1 = TestActor("actor1", "type1", {}, {port1.name: port1}) actor2 = TestActor("actor2", "type2", {port2.name: port2}, {}) self.storage.add_actor(actor1, calvinuuid.uuid("NODE")) value = self.storage.get_actor(actor1.id, cb=CalvinCB(func=cb)) value = self.q.get(timeout=0.2) assert value["key"] == actor1.id and value[ "value"]["name"] == actor1.name assert value["value"]["name"] == actor1.name assert value["value"]["type"] == actor1._type assert value["value"]["inports"] == [] assert value["value"]["outports"][0]["id"] == port1.id value = self.storage.get_port(port1.id, cb=CalvinCB(func=cb)) value = self.q.get(timeout=0.2) assert value["key"] == port1.id assert value["value"]["name"] == port1.name assert value["value"]["properties"]["direction"] == port1.direction assert value["value"]["peers"] == [["local", port2.id]] self.storage.add_actor(actor2, calvinuuid.uuid("NODE")) value = self.storage.get_actor(actor2.id, cb=CalvinCB(func=cb)) value = self.q.get(timeout=0.2) assert value["key"] == actor2.id assert value["value"]["name"] == actor2.name assert value["value"]["type"] == actor2._type assert value["value"]["inports"][0]["id"] == port2.id assert value["value"]["outports"] == [] value = self.storage.get_port(port2.id, cb=CalvinCB(func=cb)) value = self.q.get(timeout=0.2) assert value["key"] == port2.id assert value["value"]["name"] == port2.name assert value["value"]["properties"]["direction"] == port2.direction assert value["value"]["peers"] == ["local", port1.id] self.storage.delete_actor(actor1.id, cb=CalvinCB(func=cb)) value = self.q.get(timeout=0.2) assert value assert actor1.id not in self.storage.localstore self.storage.delete_port(port1.id, cb=CalvinCB(func=cb)) value = self.q.get(timeout=0.2) assert value assert port1.id not in self.storage.localstore