Example #1
0
 def make_handler(queue_consumer, service_name="srcservice",
                  event_type="eventtype", handler_type=SERVICE_POOL,
                  reliable_delivery=True, requeue_on_error=False):
     handler = EventHandler(service_name, event_type, handler_type,
                            reliable_delivery, requeue_on_error)
     handler.queue_consumer = queue_consumer
     return handler
Example #2
0
 def make_handler(queue_consumer,
                  service_name="srcservice",
                  event_type="eventtype",
                  handler_type=SERVICE_POOL,
                  reliable_delivery=True,
                  requeue_on_error=False):
     handler = EventHandler(service_name, event_type, handler_type,
                            reliable_delivery, requeue_on_error)
     handler.queue_consumer = queue_consumer
     return handler
Example #3
0
def test_event_handler(queue_consumer, mock_container):

    container = mock_container
    container.service_name = "destservice"

    # test default configuration
    event_handler = EventHandler("srcservice",
                                 "eventtype").bind(container, "foobar")
    event_handler.setup()

    assert event_handler.queue.durable is True
    assert event_handler.queue.routing_key == "eventtype"
    assert event_handler.queue.exchange.name == "srcservice.events"
    queue_consumer.register_provider.assert_called_once_with(event_handler)

    # test service pool handler
    event_handler = EventHandler("srcservice",
                                 "eventtype").bind(container, "foobar")
    event_handler.setup()

    assert (event_handler.queue.name ==
            "evt-srcservice-eventtype--destservice.foobar")

    # test broadcast handler
    event_handler = EventHandler("srcservice",
                                 "eventtype",
                                 handler_type=BROADCAST).bind(
                                     container, "foobar")
    event_handler.setup()

    assert event_handler.queue.name.startswith("evt-srcservice-eventtype-")

    # test singleton handler
    event_handler = EventHandler("srcservice",
                                 "eventtype",
                                 handler_type=SINGLETON).bind(
                                     container, "foobar")
    event_handler.setup()

    assert event_handler.queue.name == "evt-srcservice-eventtype"

    # test reliable delivery
    event_handler = EventHandler("srcservice",
                                 "eventtype").bind(container, "foobar")
    event_handler.setup()

    assert event_handler.queue.auto_delete is False
Example #4
0
def test_event_hander_reliable_delivery_defaults():
    handler = EventHandler("srcservice", "eventtype")
    assert handler.handler_type is SERVICE_POOL
    assert handler.reliable_delivery is True

    handler = EventHandler("srcservice", "eventtype", handler_type=BROADCAST)
    assert handler.handler_type is BROADCAST
    assert handler.reliable_delivery is False

    handler = EventHandler("srcservice", "eventtype", handler_type=SINGLETON)
    assert handler.handler_type is SINGLETON
    assert handler.reliable_delivery is True

    with pytest.raises(EventHandlerConfigurationError):
        EventHandler("srcservice",
                     "eventtype",
                     reliable_delivery=True,
                     handler_type=BROADCAST)
Example #5
0
    def test_raises_with_default_broadcast_identity(self, queue_consumer,
                                                    mock_container):

        container = mock_container
        container.service_name = "destservice"

        # test broadcast handler with reliable delivery
        with pytest.raises(EventHandlerConfigurationError):
            EventHandler("srcservice",
                         "eventtype",
                         handler_type=BROADCAST,
                         reliable_delivery=True).bind(container, "foobar")
Example #6
0
def test_event_handler(queue_consumer, mock_container):

    container = mock_container
    container.service_name = "destservice"

    # test default configuration
    event_handler = EventHandler("srcservice",
                                 "eventtype").bind(container, "foobar")
    event_handler.setup()

    assert event_handler.queue.durable is True
    assert event_handler.queue.routing_key == "eventtype"
    assert event_handler.queue.exchange.name == "srcservice.events"
    queue_consumer.register_provider.assert_called_once_with(event_handler)

    # test service pool handler
    event_handler = EventHandler("srcservice",
                                 "eventtype").bind(container, "foobar")
    event_handler.setup()

    assert event_handler.queue.name == (
        "evt-srcservice-eventtype--destservice.foobar")
    assert event_handler.queue.exclusive is False

    # test broadcast handler with default identifier
    with patch('nameko.events.uuid') as mock_uuid:
        mock_uuid.uuid4().hex = "uuid-value"
        event_handler = EventHandler("srcservice",
                                     "eventtype",
                                     handler_type=BROADCAST,
                                     reliable_delivery=False).bind(
                                         container, "foobar")
        event_handler.setup()

    assert event_handler.queue.name == (
        "evt-srcservice-eventtype--destservice.foobar-{}".format("uuid-value"))
    assert event_handler.queue.exclusive is True

    # test broadcast handler with custom identifier
    class BroadcastEventHandler(EventHandler):
        broadcast_identifier = "testbox"

    event_handler = BroadcastEventHandler("srcservice",
                                          "eventtype",
                                          handler_type=BROADCAST).bind(
                                              container, "foobar")
    event_handler.setup()

    assert event_handler.queue.name == (
        "evt-srcservice-eventtype--destservice.foobar-{}".format("testbox"))
    assert event_handler.queue.exclusive is False

    # test singleton handler
    event_handler = EventHandler("srcservice",
                                 "eventtype",
                                 handler_type=SINGLETON).bind(
                                     container, "foobar")
    event_handler.setup()

    assert event_handler.queue.name == "evt-srcservice-eventtype"
    assert event_handler.queue.exclusive is False

    # test reliable delivery
    event_handler = EventHandler("srcservice",
                                 "eventtype").bind(container, "foobar")
    event_handler.setup()

    assert event_handler.queue.auto_delete is False