def test_invalid_metric(self):
     meter = get_meter_provider().get_meter(__name__)
     metric = meter.create_metric("tesname", "testdesc", "unit", int,
                                  TestMetric)
     kvp = {"environment": "staging"}
     label_set = meter.get_label_set(kvp)
     record = MetricRecord(None, label_set, metric)
     collector = CustomCollector("testprefix")
     collector.add_metrics_data([record])
     collector.collect()
     self.assertLogs("opentelemetry.ext.prometheus", level="WARNING")
 def test_invalid_metric(self):
     meter = get_meter_provider().get_meter(__name__)
     metric = meter.create_metric("tesname", "testdesc", "unit", int,
                                  StubMetric)
     labels = {"environment": "staging"}
     key_labels = metrics.get_labels_as_key(labels)
     record = MetricRecord(metric, key_labels, None)
     collector = CustomCollector("testprefix")
     collector.add_metrics_data([record])
     collector.collect()
     self.assertLogs("opentelemetry.ext.prometheus", level="WARNING")
    def test_counter_to_prometheus(self):
        meter = get_meter_provider().get_meter(__name__)
        metric = meter.create_metric(
            "test@name",
            "testdesc",
            "unit",
            int,
            metrics.Counter,
            ["environment@", "os"],
        )
        kvp = {"environment@": "staging", "os": "Windows"}
        label_set = meter.get_label_set(kvp)
        aggregator = CounterAggregator()
        aggregator.update(123)
        aggregator.take_checkpoint()
        record = MetricRecord(aggregator, label_set, metric)
        collector = CustomCollector("testprefix")
        collector.add_metrics_data([record])

        for prometheus_metric in collector.collect():
            self.assertEqual(type(prometheus_metric), CounterMetricFamily)
            self.assertEqual(prometheus_metric.name, "testprefix_test_name")
            self.assertEqual(prometheus_metric.documentation, "testdesc")
            self.assertTrue(len(prometheus_metric.samples) == 1)
            self.assertEqual(prometheus_metric.samples[0].value, 123)
            self.assertTrue(len(prometheus_metric.samples[0].labels) == 2)
            self.assertEqual(
                prometheus_metric.samples[0].labels["environment_"], "staging")
            self.assertEqual(prometheus_metric.samples[0].labels["os"],
                             "Windows")