예제 #1
0
 def test_get_collector_point(self):
     aggregator = aggregate.SumAggregator()
     int_counter = self._meter.create_metric(
         "testName", "testDescription", "unit", int, Counter
     )
     float_counter = self._meter.create_metric(
         "testName", "testDescription", "unit", float, Counter
     )
     valuerecorder = self._meter.create_metric(
         "testName", "testDescription", "unit", float, ValueRecorder
     )
     result = metrics_exporter.get_collector_point(
         MetricRecord(int_counter, self._key_labels, aggregator)
     )
     self.assertIsInstance(result, metrics_pb2.Point)
     self.assertIsInstance(result.timestamp, Timestamp)
     self.assertEqual(result.int64_value, 0)
     aggregator.update(123.5)
     aggregator.take_checkpoint()
     result = metrics_exporter.get_collector_point(
         MetricRecord(float_counter, self._key_labels, aggregator)
     )
     self.assertEqual(result.double_value, 123.5)
     self.assertRaises(
         TypeError,
         metrics_exporter.get_collector_point(
             MetricRecord(valuerecorder, self._key_labels, aggregator)
         ),
     )
예제 #2
0
    def test_export(self):
        mock_client = mock.MagicMock()
        mock_export = mock.MagicMock()
        mock_client.Export = mock_export
        host_name = "testHostName"
        collector_exporter = metrics_exporter.OpenCensusMetricsExporter(
            client=mock_client, host_name=host_name
        )
        test_metric = self._meter.create_counter(
            "testname", "testdesc", "unit", int, self._labels.keys(),
        )
        record = MetricRecord(
            test_metric,
            self._key_labels,
            aggregate.SumAggregator(),
            metrics.get_meter_provider().resource,
        )

        result = collector_exporter.export([record])
        self.assertIs(result, MetricsExportResult.SUCCESS)
        # pylint: disable=unsubscriptable-object
        export_arg = mock_export.call_args[0]
        service_request = next(export_arg[0])
        output_metrics = getattr(service_request, "metrics")
        output_node = getattr(service_request, "node")
        self.assertEqual(len(output_metrics), 1)
        self.assertIsNotNone(getattr(output_node, "library_info"))
        self.assertIsNotNone(getattr(output_node, "service_info"))
        output_identifier = getattr(output_node, "identifier")
        self.assertEqual(
            getattr(output_identifier, "host_name"), "testHostName"
        )
예제 #3
0
 def test_translate_to_collector(self):
     test_metric = self._meter.create_metric(
         "testname", "testdesc", "unit", int, Counter,
     )
     aggregator = aggregate.SumAggregator()
     aggregator.update(123)
     aggregator.take_checkpoint()
     record = MetricRecord(test_metric, self._key_labels, aggregator,)
     output_metrics = metrics_exporter.translate_to_collector([record])
     self.assertEqual(len(output_metrics), 1)
     self.assertIsInstance(output_metrics[0], metrics_pb2.Metric)
     self.assertEqual(output_metrics[0].metric_descriptor.name, "testname")
     self.assertEqual(
         output_metrics[0].metric_descriptor.description, "testdesc"
     )
     self.assertEqual(output_metrics[0].metric_descriptor.unit, "unit")
     self.assertEqual(
         output_metrics[0].metric_descriptor.type,
         metrics_pb2.MetricDescriptor.CUMULATIVE_INT64,
     )
     self.assertEqual(
         len(output_metrics[0].metric_descriptor.label_keys), 1
     )
     self.assertEqual(
         output_metrics[0].metric_descriptor.label_keys[0].key,
         "environment",
     )
     self.assertEqual(len(output_metrics[0].timeseries), 1)
     self.assertEqual(len(output_metrics[0].timeseries[0].label_values), 1)
     self.assertEqual(
         output_metrics[0].timeseries[0].label_values[0].has_value, True
     )
     self.assertEqual(
         output_metrics[0].timeseries[0].label_values[0].value, "staging"
     )
     self.assertEqual(len(output_metrics[0].timeseries[0].points), 1)
     self.assertEqual(
         output_metrics[0].timeseries[0].points[0].timestamp.seconds,
         record.aggregator.last_update_timestamp // 1000000000,
     )
     self.assertEqual(
         output_metrics[0].timeseries[0].points[0].timestamp.nanos,
         record.aggregator.last_update_timestamp % 1000000000,
     )
     self.assertEqual(
         output_metrics[0].timeseries[0].points[0].int64_value, 123
     )
예제 #4
0
    def test_translate_to_collector(self):
        test_metric = self._meter.create_counter(
            "testname", "testdesc", "unit", int, self._labels.keys()
        )
        aggregator = aggregate.SumAggregator()
        aggregator.update(123)
        aggregator.take_checkpoint()
        record = MetricRecord(
            test_metric,
            self._key_labels,
            aggregator,
            metrics.get_meter_provider().resource,
        )
        start_timestamp = Timestamp()
        output_metrics = metrics_exporter.translate_to_collector(
            [record], start_timestamp,
        )
        self.assertEqual(len(output_metrics), 1)
        self.assertIsInstance(output_metrics[0], metrics_pb2.Metric)
        self.assertEqual(output_metrics[0].metric_descriptor.name, "testname")
        self.assertEqual(
            output_metrics[0].metric_descriptor.description, "testdesc"
        )
        self.assertEqual(output_metrics[0].metric_descriptor.unit, "unit")
        self.assertEqual(
            output_metrics[0].metric_descriptor.type,
            metrics_pb2.MetricDescriptor.CUMULATIVE_INT64,
        )
        self.assertEqual(
            len(output_metrics[0].metric_descriptor.label_keys), 2
        )
        self.assertEqual(
            output_metrics[0].metric_descriptor.label_keys[0].key,
            "environment",
        )
        self.assertEqual(
            output_metrics[0].metric_descriptor.label_keys[1].key, "number",
        )

        self.assertIsNotNone(output_metrics[0].resource)
        self.assertEqual(
            output_metrics[0].resource.type, "",
        )
        self.assertEqual(
            output_metrics[0].resource.labels["key_with_str_value"],
            self._resource_labels["key_with_str_value"],
        )
        self.assertIsInstance(
            output_metrics[0].resource.labels["key_with_int_val"], str,
        )
        self.assertEqual(
            output_metrics[0].resource.labels["key_with_int_val"],
            str(self._resource_labels["key_with_int_val"]),
        )
        self.assertIsInstance(
            output_metrics[0].resource.labels["key_with_true"], str,
        )
        self.assertEqual(
            output_metrics[0].resource.labels["key_with_true"],
            str(self._resource_labels["key_with_true"]),
        )

        self.assertEqual(len(output_metrics[0].timeseries), 1)
        self.assertEqual(len(output_metrics[0].timeseries[0].label_values), 2)
        self.assertEqual(
            output_metrics[0].timeseries[0].start_timestamp, start_timestamp
        )
        self.assertEqual(
            output_metrics[0].timeseries[0].label_values[0].has_value, True
        )
        self.assertEqual(
            output_metrics[0].timeseries[0].label_values[0].value, "staging"
        )
        self.assertEqual(len(output_metrics[0].timeseries[0].points), 1)
        self.assertEqual(
            output_metrics[0].timeseries[0].points[0].timestamp.seconds,
            record.aggregator.last_update_timestamp // 1000000000,
        )
        self.assertEqual(
            output_metrics[0].timeseries[0].points[0].timestamp.nanos,
            record.aggregator.last_update_timestamp % 1000000000,
        )
        self.assertEqual(
            output_metrics[0].timeseries[0].points[0].int64_value, 123
        )