Exemplo n.º 1
0
async def test_send_producer_without_consumer():
    class TestProducer(Producer):
        async def send(self, data, **kwargs):
            await super().send(data)
            await get_chan(TEST_CHANNEL).stop()

        async def pause(self):
            pass

        async def resume(self):
            pass

    class TestConsumer(Consumer):
        async def consume(self):
            while not self.should_stop:
                await self.callback(**(await self.queue.get()))

    class TestChannel(Channel):
        PRODUCER_CLASS = TestProducer
        CONSUMER_CLASS = TestConsumer

    del_chan(TEST_CHANNEL)
    await create_channel_instance(TestChannel, set_chan)

    producer = TestProducer(get_chan(TEST_CHANNEL))
    await producer.run()
    await producer.send({})
Exemplo n.º 2
0
async def test_new_consumer_with_consumer_wildcard_filters():
    del_chan(EMPTY_TEST_CHANNEL)
    await create_channel_instance(EmptyTestChannel, set_chan)
    consumer = await get_chan(EMPTY_TEST_CHANNEL).new_consumer(empty_test_callback, {"test_key": 1,
                                                                                     "test_key_2": "abc",
                                                                                     "test_key_3": CHANNEL_WILDCARD})
    assert get_chan(EMPTY_TEST_CHANNEL).get_consumers() == [consumer]
    assert get_chan(EMPTY_TEST_CHANNEL).get_consumer_from_filters({}) == [consumer]  # returns all if empty
    assert get_chan(EMPTY_TEST_CHANNEL).get_consumer_from_filters({"test_key": 1, "test_key_2": "abc"}) == [consumer]
    assert get_chan(EMPTY_TEST_CHANNEL).get_consumer_from_filters(
        {"test_key": 1, "test_key_2": "abc", "test_key_3": 45}) == [consumer]
    assert get_chan(EMPTY_TEST_CHANNEL).get_consumer_from_filters(
        {"test_key": 1, "test_key_2": "abc", "test_key_3": CHANNEL_WILDCARD}) == [consumer]
    assert get_chan(EMPTY_TEST_CHANNEL).get_consumer_from_filters({"test_key": 4, "test_key_2": "bc"}) == []
    assert get_chan(EMPTY_TEST_CHANNEL).get_consumer_from_filters({"test_key": 1, "test_key_2": CHANNEL_WILDCARD}) == [
        consumer]
    assert get_chan(EMPTY_TEST_CHANNEL).get_consumer_from_filters({"test_key": 1}) == [consumer]
    assert get_chan(EMPTY_TEST_CHANNEL).get_consumer_from_filters({"test_key_2": CHANNEL_WILDCARD}) == [consumer]
    assert get_chan(EMPTY_TEST_CHANNEL).get_consumer_from_filters({"test_key_3": CHANNEL_WILDCARD}) == [consumer]
    assert get_chan(EMPTY_TEST_CHANNEL).get_consumer_from_filters({"test_key_3": "e"}) == [consumer]
    assert get_chan(EMPTY_TEST_CHANNEL).get_consumer_from_filters({"test_key": 3, "test_key_2": CHANNEL_WILDCARD}) == []
    assert get_chan(EMPTY_TEST_CHANNEL).get_consumer_from_filters(
        {"test_key": CHANNEL_WILDCARD, "test_key_2": "abc"}) == [consumer]
    assert get_chan(EMPTY_TEST_CHANNEL).get_consumer_from_filters(
        {"test_key": CHANNEL_WILDCARD, "test_key_2": "a"}) == []
    assert get_chan(EMPTY_TEST_CHANNEL).get_consumer_from_filters(
        {"test_key": CHANNEL_WILDCARD, "test_key_2": "a", "test_key_3": CHANNEL_WILDCARD}) == []
    assert get_chan(EMPTY_TEST_CHANNEL).get_consumer_from_filters(
        {"test_key": CHANNEL_WILDCARD, "test_key_2": CHANNEL_WILDCARD}) == [consumer]
    await get_chan(EMPTY_TEST_CHANNEL).stop()
Exemplo n.º 3
0
async def test_create_channel_instance():
    class TestChannel(Channel):
        pass

    del_chan(TEST_CHANNEL)
    await create_channel_instance(TestChannel, set_chan)
    await get_chan(TEST_CHANNEL).stop()
Exemplo n.º 4
0
async def test_unregister_producer():
    del_chan(EMPTY_TEST_CHANNEL)
    await create_channel_instance(EmptyTestChannel, set_chan)
    assert get_chan(EMPTY_TEST_CHANNEL).producers == []
    producer = EmptyTestProducer(None)
    await get_chan(EMPTY_TEST_CHANNEL).register_producer(producer)
    assert get_chan(EMPTY_TEST_CHANNEL).producers == [producer]
    await get_chan(EMPTY_TEST_CHANNEL).stop()
Exemplo n.º 5
0
async def test_remove_consumer():
    del_chan(EMPTY_TEST_CHANNEL)
    await create_channel_instance(EmptyTestChannel, set_chan)
    consumer = await get_chan(EMPTY_TEST_CHANNEL).new_consumer(empty_test_callback)
    assert get_chan(EMPTY_TEST_CHANNEL).get_consumers() == [consumer]
    await get_chan(EMPTY_TEST_CHANNEL).remove_consumer(consumer)
    assert get_chan(EMPTY_TEST_CHANNEL).get_consumers() == []
    await get_chan(EMPTY_TEST_CHANNEL).stop()
Exemplo n.º 6
0
async def test_get_internal_producer():
    class TestChannel(Channel):
        pass

    del_chan(TEST_CHANNEL)
    await create_channel_instance(TestChannel, set_chan)
    with pytest.raises(TypeError):
        get_chan(TEST_CHANNEL).get_internal_producer()
    await get_chan(TEST_CHANNEL).stop()
Exemplo n.º 7
0
async def test_set_chan():
    class TestChannel(Channel):
        pass

    del_chan(TEST_CHANNEL)
    await create_channel_instance(TestChannel, set_chan)
    with pytest.raises(ValueError):
        set_chan(TestChannel(), name=TestChannel.get_name())
    await get_chan(TEST_CHANNEL).stop()
Exemplo n.º 8
0
async def test_new_consumer_with_filters():
    del_chan(EMPTY_TEST_CHANNEL)
    await create_channel_instance(EmptyTestChannel, set_chan)
    consumer = await get_chan(EMPTY_TEST_CHANNEL).new_consumer(empty_test_callback, {"test_key": 1})
    assert get_chan(EMPTY_TEST_CHANNEL).get_consumers() == [consumer]
    assert get_chan(EMPTY_TEST_CHANNEL).get_consumer_from_filters({}) == [consumer]   # returns all if empty
    assert get_chan(EMPTY_TEST_CHANNEL).get_consumer_from_filters({"test_key": 2}) == []
    assert get_chan(EMPTY_TEST_CHANNEL).get_consumer_from_filters({"test_key": 1, "test2": 2}) == []
    assert get_chan(EMPTY_TEST_CHANNEL).get_consumer_from_filters({"test_key": 1}) == [consumer]
    await get_chan(EMPTY_TEST_CHANNEL).stop()
Exemplo n.º 9
0
async def init_consumer_test():
    class TestChannel(Channel):
        PRODUCER_CLASS = EmptyTestProducer
        CONSUMER_CLASS = EmptyTestConsumer

    del_chan(TEST_CHANNEL)
    await create_channel_instance(TestChannel, set_chan)
    producer = EmptyTestProducer(get_chan(TEST_CHANNEL))
    await producer.run()
    return await get_chan(TEST_CHANNEL).new_consumer(empty_test_callback)
Exemplo n.º 10
0
async def test_evaluator_channel_send():
    del_chan(MATRIX_CHANNEL)
    await create_matrix_channels()
    await get_chan(MATRIX_CHANNEL).new_consumer(matrix_callback)
    await get_chan(MATRIX_CHANNEL).get_internal_producer().send(evaluator_name="test",
                                                                evaluator_type="test2",
                                                                eval_note=1)

    # following assert should be None because send() doesn't call set_tentacle_value
    assert Matrix.instance().get_node_at_path(
        get_tentacle_path(tentacle_name="test", tentacle_type="test2")) is None
    await get_chan(MATRIX_CHANNEL).stop()
Exemplo n.º 11
0
async def test_producer_is_running():
    class TestChannel(Channel):
        PRODUCER_CLASS = EmptyTestProducer

    del_chan(TEST_CHANNEL)
    await create_channel_instance(TestChannel, set_chan)
    producer = EmptyTestProducer(get_chan(TEST_CHANNEL))
    assert not producer.is_running
    await producer.run()
    assert producer.is_running
    await get_chan(TEST_CHANNEL).stop()
    assert not producer.is_running
Exemplo n.º 12
0
async def test_evaluator_channel_send_eval_note():
    del_chan(MATRIX_CHANNEL)
    await create_matrix_channels()
    await get_chan(MATRIX_CHANNEL).new_consumer(matrix_callback)
    await get_chan(MATRIX_CHANNEL).get_internal_producer().send_eval_note(evaluator_name="test",
                                                                          evaluator_type="test2",
                                                                          eval_note=1,
                                                                          eval_note_type=int)

    assert Matrix.instance().get_node_at_path(
        get_tentacle_path(tentacle_name="test", tentacle_type="test2")).node_value == 1
    await get_chan(MATRIX_CHANNEL).stop()
Exemplo n.º 13
0
async def test_set_chan_using_default_name():
    class TestChannel(Channel):
        pass

    del_chan(TEST_CHANNEL)
    channel = TestChannel()
    returned_channel = set_chan(channel, name=None)
    assert returned_channel is channel
    assert channel.get_name() is not None
    assert ChannelInstances.instance().channels[channel.get_name()] == channel
    with pytest.raises(ValueError):
        set_chan(TestChannel(), name=TestChannel.get_name())
    await get_chan(TEST_CHANNEL).stop()
Exemplo n.º 14
0
async def test_create_all_subclasses_channel():
    class TestChannelClass(Channel):
        pass

    class Test1Channel(TestChannelClass):
        pass

    class Test2Channel(TestChannelClass):
        pass

    del_chan(TEST_CHANNEL)
    await create_all_subclasses_channel(TestChannelClass, set_chan)
    assert len(ChannelInstances.instance().channels
               ) == 3  # (EmptyTestChannel, Test1Channel, Test2Channel)
Exemplo n.º 15
0
async def test_supervised_consumer():
    class TestSupervisedConsumer(SupervisedConsumer):
        pass

    class TestChannel(Channel):
        PRODUCER_CLASS = EmptyTestProducer
        CONSUMER_CLASS = TestSupervisedConsumer

    del_chan(TEST_CHANNEL)
    await create_channel_instance(TestChannel, set_chan)
    producer = EmptyTestProducer(get_chan(TEST_CHANNEL))
    await producer.run()
    consumer = await get_chan(TEST_CHANNEL).new_consumer(empty_test_callback)
    await get_chan(TEST_CHANNEL).get_internal_producer().send({})
    await consumer.queue.join()
    await get_chan(TEST_CHANNEL).stop()
Exemplo n.º 16
0
async def test_send_internal_producer_without_consumer():
    class TestProducer(Producer):
        async def send(self, data, **kwargs):
            await super().send(data)
            await get_chan(TEST_CHANNEL).stop()

        async def pause(self):
            pass

        async def resume(self):
            pass

    class TestChannel(Channel):
        PRODUCER_CLASS = TestProducer

    del_chan(TEST_CHANNEL)
    await create_channel_instance(TestChannel, set_chan)
    await get_chan(TEST_CHANNEL).get_internal_producer().send({})
Exemplo n.º 17
0
async def test_resume_producer():
    class TestSupervisedConsumer(SupervisedConsumer):
        pass

    class TestChannel(Channel):
        PRODUCER_CLASS = EmptyTestProducer
        CONSUMER_CLASS = TestSupervisedConsumer

    del_chan(TEST_CHANNEL)
    await create_channel_instance(TestChannel, set_chan)
    producer = EmptyTestProducer(get_chan(TEST_CHANNEL))
    await producer.run()
    await get_chan(TEST_CHANNEL).new_consumer(empty_test_callback)
    await get_chan(TEST_CHANNEL).new_consumer(empty_test_callback)
    await get_chan(TEST_CHANNEL).new_consumer(empty_test_callback)
    await producer.send({"data": "test"})
    await producer.wait_for_processing()
    await get_chan(TEST_CHANNEL).stop()
Exemplo n.º 18
0
async def test_pause_producer_without_consumers():
    class TestProducer(Producer):
        async def pause(self):
            await get_chan(TEST_CHANNEL).stop()

        async def pause(self):
            pass

        async def resume(self):
            pass

    class TestChannel(Channel):
        PRODUCER_CLASS = TestProducer
        CONSUMER_CLASS = EmptyTestConsumer

    del_chan(TEST_CHANNEL)
    await create_channel_instance(TestChannel, set_chan)
    await TestProducer(get_chan(TEST_CHANNEL)).run()
Exemplo n.º 19
0
async def test_send_producer_with_consumer():
    class TestConsumer(Consumer):
        pass

    class TestChannel(Channel):
        PRODUCER_CLASS = EmptyTestProducer
        CONSUMER_CLASS = TestConsumer

    async def callback(data):
        assert data == "test"
        await get_chan(TEST_CHANNEL).stop()

    del_chan(TEST_CHANNEL)
    await create_channel_instance(TestChannel, set_chan)
    await get_chan(TEST_CHANNEL).new_consumer(callback)

    producer = EmptyTestProducer(get_chan(TEST_CHANNEL))
    await producer.run()
    await producer.send({"data": "test"})
Exemplo n.º 20
0
async def test_internal_consumer():
    class TestInternalConsumer(InternalConsumer):
        async def perform(self, kwargs):
            pass

    class TestChannel(Channel):
        PRODUCER_CLASS = EmptyTestProducer
        CONSUMER_CLASS = TestInternalConsumer

    del_chan(TEST_CHANNEL)
    await create_channel_instance(TestChannel, set_chan)
    producer = EmptyTestProducer(get_chan(TEST_CHANNEL))
    await producer.run()
    consumer = TestInternalConsumer()
    await get_chan(TEST_CHANNEL).new_consumer(internal_consumer=consumer)

    with patch.object(consumer, 'perform',
                      new=AsyncMock()) as mocked_consume_ends:
        await get_chan(TEST_CHANNEL).get_internal_producer().send({})
        await mock_was_called_once(mocked_consume_ends)

    await get_chan(TEST_CHANNEL).stop()
Exemplo n.º 21
0
async def test_evaluator_channel_creation():
    del_chan(MATRIX_CHANNEL)
    await create_matrix_channels()
    await get_chan(MATRIX_CHANNEL).new_consumer(matrix_callback)
    await get_chan(MATRIX_CHANNEL).stop()
Exemplo n.º 22
0
async def test_new_consumer_without_producer():
    del_chan(EMPTY_TEST_CHANNEL)
    await create_channel_instance(EmptyTestChannel, set_chan)
    await get_chan(EMPTY_TEST_CHANNEL).new_consumer(empty_test_callback)
    assert len(get_chan(EMPTY_TEST_CHANNEL).consumers) == 1
    await get_chan(EMPTY_TEST_CHANNEL).stop()