Esempio n. 1
0
    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
Esempio n. 2
0
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)]
        }
    }
Esempio n. 3
0
    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