Exemple #1
0
    def test_published_time_as_message_attribute(self, message_wrapper,
                                                 caplog):
        callback = Callback(sub_published_time_type)
        callback(message_wrapper)

        success_log = caplog.records[-2]
        assert success_log.message == "<class 'float'>"
Exemple #2
0
    def test_log_does_not_ack_called_message_when_execution_fails(
            self, caplog, message_wrapper, published_at):
        @sub(topic="some-cool-topic", prefix="rele")
        def crashy_sub_stub(data, **kwargs):
            raise ValueError("I am an exception from a sub")

        callback = Callback(crashy_sub_stub)
        res = callback(message_wrapper)

        assert res is None
        message_wrapper.ack.assert_not_called()
        failed_log = caplog.records[-1]
        assert failed_log.message == ("Exception raised while processing "
                                      "message for rele-some-cool-topic - "
                                      "crashy_sub_stub: ValueError")
        assert failed_log.metrics == {
            "name": "subscriptions",
            "data": {
                "agent": "rele",
                "topic": "some-cool-topic",
                "status": "failed",
                "subscription": "rele-some-cool-topic",
                "duration_seconds": pytest.approx(0.5, abs=0.5),
                "attributes": {
                    "lang": "es",
                    "published_at": str(published_at),
                },
            },
        }
        assert failed_log.subscription_message == message_wrapper
Exemple #3
0
    def test_log_acks_called_message_when_not_json_serializable(
        self, caplog, message_wrapper_invalid_json, published_at
    ):
        callback = Callback(sub_stub)
        res = callback(message_wrapper_invalid_json)

        assert res is None
        message_wrapper_invalid_json.ack.assert_called_once()
        failed_log = caplog.records[-1]
        assert failed_log.message == (
            "Exception raised while processing "
            "message for rele-some-cool-topic - "
            "sub_stub: JSONDecodeError"
        )
        assert failed_log.metrics == {
            "name": "subscriptions",
            "data": {
                "agent": "rele",
                "topic": "some-cool-topic",
                "status": "failed",
                "subscription": "rele-some-cool-topic",
                "duration_seconds": pytest.approx(0.5, abs=0.5),
                "attributes": {},
            },
        }
        assert failed_log.subscription_message == message_wrapper_invalid_json
Exemple #4
0
    def test_log_start_processing_when_callback_called(
        self, caplog, message_wrapper, published_at
    ):
        with caplog.at_level(logging.DEBUG):
            callback = Callback(sub_stub)
            res = callback(message_wrapper)

        assert res == 123
        log1 = caplog.records[0]
        assert log1.message == (
            "Start processing message for " "rele-some-cool-topic - sub_stub"
        )
        assert log1.metrics == {
            "name": "subscriptions",
            "data": {
                "agent": "rele",
                "topic": "some-cool-topic",
                "status": "received",
                "subscription": "rele-some-cool-topic",
                "attributes": {
                    "lang": "es",
                    "published_at": str(published_at),
                },
            },
        }
Exemple #5
0
    def test_old_django_connections_closed_when_middleware_is_used(
            self, mock_close_old_connections, message_wrapper, config):
        config.middleware = ["rele.contrib.DjangoDBMiddleware"]
        register_middleware(config)
        callback = Callback(sub_stub)
        res = callback(message_wrapper)

        assert res == 123
        assert mock_close_old_connections.call_count == 2
Exemple #6
0
    def test_acks_message_when_execution_successful(self, caplog,
                                                    message_wrapper):
        with caplog.at_level(logging.DEBUG):
            callback = Callback(sub_stub)
            res = callback(message_wrapper)

        assert res == 123
        message_wrapper.ack.assert_called_once()
        assert len(caplog.records) == 3
        message_wrapper_log = caplog.records[1]
        assert message_wrapper_log.message == ("I am a task doing "
                                               "stuff with ID 123 (es)")
Exemple #7
0
    def test_log_when_execution_is_succesful(self, message_wrapper, caplog,
                                             published_at):
        callback = Callback(sub_stub)
        callback(message_wrapper)

        success_log = caplog.records[-1]
        assert success_log.message == ("Successfully processed message for "
                                       "rele-some-cool-topic - sub_stub")
        assert success_log.metrics == {
            "name": "subscriptions",
            "data": {
                "agent": "rele",
                "topic": "some-cool-topic",
                "status": "succeeded",
                "subscription": "rele-some-cool-topic",
                "duration_seconds": pytest.approx(0.5, abs=0.5),
                "attributes": {
                    "lang": "es",
                    "published_at": str(published_at),
                },
            },
        }