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