Exemple #1
0
    def assert_on_web_request(
        self,
        monitor: PrometheusMonitor,
        metrics: FaustMetrics,
        app: AppT,
        request: web.Request,
        response: web.Response,
        view: web.View,
        expected_status: int,
    ) -> None:
        state = monitor.on_web_request_start(app, request, view=view)
        monitor.on_web_request_end(app, request, response, state, view=view)

        self.assert_has_sample_value(
            metrics.http_status_codes,
            "http_status_codes_total",
            {"status_code": str(expected_status)},
            1,
        )
        self.assert_has_sample_value(
            metrics.http_latency,
            "http_latency_sum",
            {},
            monitor.ms_since(state["time_end"]),
        )
Exemple #2
0
    def test_on_commit_completed(self, monitor: PrometheusMonitor,
                                 metrics: FaustMetrics) -> None:
        consumer = Mock(name="consumer")

        state = monitor.on_commit_initiated(consumer)
        monitor.on_commit_completed(consumer, state)

        self.assert_has_sample_value(
            metrics.consumer_commit_latency,
            "consumer_commit_latency_sum",
            {},
            monitor.ms_since(float(state)),
        )
Exemple #3
0
    def test_on_assignment_start_failed(self, monitor: PrometheusMonitor,
                                        metrics: FaustMetrics) -> None:
        assignor = Mock(name="assignor")

        state = monitor.on_assignment_start(assignor)
        monitor.on_assignment_error(assignor, state, KeyError("foo"))

        self.assert_has_sample_value(
            metrics.assignment_operations,
            "assignment_operations_total",
            {"operation": monitor.ERROR},
            1,
        )
        self.assert_has_sample_value(
            metrics.assign_latency,
            "assign_latency_sum",
            {},
            monitor.ms_since(state["time_start"]),
        )
Exemple #4
0
    def test_on_assignment_start_completed(self, monitor: PrometheusMonitor,
                                           metrics: FaustMetrics) -> None:
        assignor = Mock(name="assignor")

        state = monitor.on_assignment_start(assignor)
        monitor.on_assignment_completed(assignor, state)

        self.assert_has_sample_value(
            metrics.assignment_operations,
            "assignment_operations_total",
            {"operation": monitor.COMPLETED},
            1,
        )
        self.assert_has_sample_value(
            metrics.assign_latency,
            "assign_latency_sum",
            {},
            monitor.ms_since(state["time_start"]),
        )
Exemple #5
0
    def test_on_send_error(self, monitor: PrometheusMonitor,
                           metrics: FaustMetrics) -> None:
        timestamp = 101.01
        producer = Mock(name="producer")

        monitor.on_send_error(producer, KeyError("foo"), timestamp)

        self.assert_has_sample_value(
            metrics.total_error_messages_sent,
            "total_error_messages_sent_total",
            {},
            1,
        )
        self.assert_has_sample_value(
            metrics.producer_error_send_latency,
            "producer_error_send_latency_sum",
            {},
            monitor.ms_since(timestamp),
        )
Exemple #6
0
    def test_on_rebalance_end(self, monitor: PrometheusMonitor,
                              metrics: FaustMetrics, app: AppT) -> None:
        state = {"time_start": 99.2}
        n_rebalances = 12
        metrics.total_rebalances_recovering.set(n_rebalances)

        monitor.on_rebalance_end(app, state)

        self.assert_has_sample_value(
            metrics.total_rebalances_recovering,
            "total_rebalances_recovering",
            {},
            n_rebalances - 1,
        )
        self.assert_has_sample_value(
            metrics.rebalance_done_latency,
            "rebalance_done_latency_sum",
            {},
            monitor.ms_since(state["time_end"]),
        )
Exemple #7
0
    def test_on_rebalance_return(self, monitor: PrometheusMonitor,
                                 metrics: FaustMetrics, app: AppT) -> None:
        state = {"time_start": 99.1}
        n_rebalances = 50
        metrics.total_rebalances.set(n_rebalances)

        monitor.on_rebalance_return(app, state)

        self.assert_has_sample_value(metrics.total_rebalances,
                                     "total_rebalances", {}, n_rebalances - 1)
        self.assert_has_sample_value(
            metrics.total_rebalances_recovering,
            "total_rebalances_recovering",
            {},
            1,
        )
        self.assert_has_sample_value(
            metrics.rebalance_done_consumer_latency,
            "rebalance_done_consumer_latency_sum",
            {},
            monitor.ms_since(state["time_return"]),
        )
Exemple #8
0
    def test_on_send_initiated_completed(self, monitor: PrometheusMonitor,
                                         metrics: FaustMetrics) -> None:
        producer = Mock(name="producer")

        state = monitor.on_send_initiated(producer, "topic1", "message", 321,
                                          123)
        monitor.on_send_completed(producer, state, Mock(name="metadata"))

        self.assert_has_sample_value(metrics.total_sent_messages,
                                     "total_sent_messages_total", {}, 1)
        self.assert_has_sample_value(
            metrics.topic_messages_sent,
            "topic_messages_sent_total",
            {"topic": "topic.topic1"},
            1,
        )
        self.assert_has_sample_value(
            metrics.producer_send_latency,
            "producer_send_latency_sum",
            {},
            monitor.ms_since(float(state)),
        )