示例#1
0
class TestLocalEndpoint(unittest.TestCase):
    def setUp(self):
        self.port = InPort("port", Mock())
        self.peer_port = OutPort("peer_port", Mock())
        self.local_in = LocalInEndpoint(self.port, self.peer_port)
        self.local_out = LocalOutEndpoint(self.peer_port, self.port)
        self.port.set_queue(
            queue.fanout_fifo.FanoutFIFO({
                'queue_length': 4,
                'direction': "in"
            }, {}))
        self.peer_port.set_queue(
            queue.fanout_fifo.FanoutFIFO(
                {
                    'queue_length': 4,
                    'direction': "out"
                }, {}))
        self.peer_port.attach_endpoint(self.local_out)
        self.port.attach_endpoint(self.local_in)

    def test_is_connected(self):
        assert self.local_in.is_connected
        assert self.local_out.is_connected

    def test_communicate(self):
        self.peer_port.queue.write(0, None)
        self.peer_port.queue.write(1, None)

        for e in self.peer_port.endpoints:
            e.communicate()

        assert self.peer_port.tokens_available(4)
        self.local_out.port.queue.write(2, None)
        assert not self.peer_port.tokens_available(4)
        assert self.peer_port.tokens_available(3)

        assert self.port.tokens_available(2, self.port.id)

        for e in self.peer_port.endpoints:
            e.communicate()

        assert self.port.tokens_available(3, self.port.id)
        for i in range(3):
            assert self.port.queue.peek(self.port.id) == i
        assert self.port.tokens_available(0, self.port.id)
        self.port.queue.commit(self.port.id)
        assert self.port.tokens_available(0, self.port.id)

    def test_get_peer(self):
        assert self.local_in.get_peer() == ('local', self.peer_port.id)
        assert self.local_out.get_peer() == ('local', self.port.id)
示例#2
0
class TestLocalEndpoint(unittest.TestCase):

    def setUp(self):
        self.port = InPort("port", Mock())
        self.peer_port = OutPort("peer_port", Mock())
        self.local_in = LocalInEndpoint(self.port, self.peer_port)
        self.local_out = LocalOutEndpoint(self.peer_port, self.port)
        self.port.set_queue(queue.fanout_fifo.FanoutFIFO(5))
        self.peer_port.set_queue(queue.fanout_fifo.FanoutFIFO(5))
        self.peer_port.attach_endpoint(self.local_out)
        self.port.attach_endpoint(self.local_in)

    def test_is_connected(self):
        assert self.local_in.is_connected
        assert self.local_out.is_connected

    def test_communicate(self):
        self.peer_port.queue.write(0)
        self.peer_port.queue.write(1)

        for e in self.peer_port.endpoints:
            e.communicate()

        assert self.peer_port.tokens_available(4)
        self.local_out.port.queue.write(2)
        assert not self.peer_port.tokens_available(4)
        assert self.peer_port.tokens_available(3)

        assert self.port.tokens_available(2, self.port.id)

        for e in self.peer_port.endpoints:
            e.communicate()

        assert self.port.tokens_available(3, self.port.id)
        for i in range(3):
            assert self.port.queue.peek(self.port.id) == i
        assert self.port.tokens_available(0, self.port.id)
        self.port.queue.commit()
        assert self.port.tokens_available(0, self.port.id)

    def test_get_peer(self):
        assert self.local_in.get_peer() == ('local', self.peer_port.id)
        assert self.local_out.get_peer() == ('local', self.port.id)