コード例 #1
0
    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)
コード例 #2
0
 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)
コード例 #3
0
 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)
コード例 #4
0
 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)
コード例 #5
0
 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()