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"]), )
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)), )
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"]), )
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"]), )
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), )
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"]), )
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"]), )
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)), )