def test_live_metric_envelope_observer(self): aggregator = ValueObserverAggregator() aggregator.update(123) aggregator.take_checkpoint() record = MetricRecord(self._test_obs, self._test_labels, aggregator) exporter = LiveMetricsExporter( instrumentation_key=self._instrumentation_key, span_processor=self._span_processor, ) envelope = exporter._metric_to_live_metrics_envelope([record]) self.assertIsInstance(envelope, LiveMetricEnvelope) self.assertEqual( envelope.instrumentation_key, "99c42f65-1656-4c41-afde-bd86b709a4a7", ) self.assertEqual(envelope.documents, []) self.assertEqual(envelope.metrics[0].name, "testname") self.assertEqual(envelope.metrics[0].value, 123) self.assertEqual(envelope.metrics[0].weight, 1)
def test_post_subscribed(self): """Test post when user is subscribed.""" with mock.patch("requests.post") as request: request.return_value = MockResponse( 200, None, {"x-ms-qps-subscribed": "true"}) self._post = LiveMetricsPost( exporter=LiveMetricsExporter( self._instrumentation_key, span_processor=self._span_processor, ), meter=self._meter, instrumentation_key=self._instrumentation_key, ) self._post.post() self.assertTrue(self._post.is_user_subscribed)
def test_post_error(self): """Test post when failure.""" with mock.patch("requests.post") as request: request.return_value = MockResponse(400, None, {}) self._post = LiveMetricsPost( exporter=LiveMetricsExporter( self._instrumentation_key, span_processor=self._span_processor, ), meter=self._meter, instrumentation_key=self._instrumentation_key, ) self._post.last_request_success_time = time.time() - 61 self._post.post() self.assertFalse(self._post.last_send_succeeded) self.assertEqual(self._post.interval, 60)
def test_post_ok(self): """Test post send requests to Live Metrics service.""" with mock.patch("requests.post") as request: request.return_value = MockResponse( 200, None, {"x-ms-qps-subscribed": "false"}) self._post = LiveMetricsPost( exporter=LiveMetricsExporter( self._instrumentation_key, span_processor=self._span_processor, ), meter=self._meter, instrumentation_key=self._instrumentation_key, ) self._post.post() self.assertTrue(request.called) self.assertTrue(self._post.last_request_success_time > 0) self.assertTrue(self._post.last_send_succeeded) self.assertFalse(self._post.is_user_subscribed)
def __init__( self, meter: Meter, instrumentation_key: str, span_processor: AzureMetricsSpanProcessor, ): super().__init__() self.thread_event = threading.Event() self.interval = MAIN_INTERVAL self._instrumentation_key = instrumentation_key self._is_user_subscribed = False self._meter = meter self._span_processor = span_processor self._exporter = LiveMetricsExporter(self._instrumentation_key, self._span_processor) self._post = None self._ping = LiveMetricsPing(self._instrumentation_key) self.start()