|
17 | 17 | from unittest.mock import Mock, patch
|
18 | 18 |
|
19 | 19 | from prometheus_client import generate_latest
|
20 |
| -from prometheus_client.core import CounterMetricFamily, GaugeMetricFamily |
| 20 | +from prometheus_client.core import ( |
| 21 | + CounterMetricFamily, |
| 22 | + GaugeMetricFamily, |
| 23 | + InfoMetricFamily, |
| 24 | +) |
21 | 25 |
|
22 | 26 | from opentelemetry.exporter.prometheus import (
|
23 | 27 | PrometheusMetricReader,
|
|
33 | 37 | ResourceMetrics,
|
34 | 38 | ScopeMetrics,
|
35 | 39 | )
|
| 40 | +from opentelemetry.sdk.resources import Resource |
36 | 41 | from opentelemetry.test.metrictestutil import (
|
37 | 42 | _generate_gauge,
|
38 | 43 | _generate_sum,
|
@@ -101,7 +106,7 @@ def test_histogram_to_prometheus(self):
|
101 | 106 | ]
|
102 | 107 | )
|
103 | 108 |
|
104 |
| - collector = _CustomCollector() |
| 109 | + collector = _CustomCollector(disable_target_info=True) |
105 | 110 | collector.add_metrics_data(metrics_data)
|
106 | 111 | result_bytes = generate_latest(collector)
|
107 | 112 | result = result_bytes.decode("utf-8")
|
@@ -146,7 +151,7 @@ def test_sum_to_prometheus(self):
|
146 | 151 | ]
|
147 | 152 | )
|
148 | 153 |
|
149 |
| - collector = _CustomCollector() |
| 154 | + collector = _CustomCollector(disable_target_info=True) |
150 | 155 | collector.add_metrics_data(metrics_data)
|
151 | 156 |
|
152 | 157 | for prometheus_metric in collector.collect():
|
@@ -189,7 +194,7 @@ def test_gauge_to_prometheus(self):
|
189 | 194 | ]
|
190 | 195 | )
|
191 | 196 |
|
192 |
| - collector = _CustomCollector() |
| 197 | + collector = _CustomCollector(disable_target_info=True) |
193 | 198 | collector.add_metrics_data(metrics_data)
|
194 | 199 |
|
195 | 200 | for prometheus_metric in collector.collect():
|
@@ -251,7 +256,7 @@ def test_list_labels(self):
|
251 | 256 | )
|
252 | 257 | ]
|
253 | 258 | )
|
254 |
| - collector = _CustomCollector() |
| 259 | + collector = _CustomCollector(disable_target_info=True) |
255 | 260 | collector.add_metrics_data(metrics_data)
|
256 | 261 |
|
257 | 262 | for prometheus_metric in collector.collect():
|
@@ -293,3 +298,44 @@ def test_multiple_collection_calls(self):
|
293 | 298 | result_2 = list(metric_reader._collector.collect())
|
294 | 299 | self.assertEqual(result_0, result_1)
|
295 | 300 | self.assertEqual(result_1, result_2)
|
| 301 | + |
| 302 | + def test_target_info_enabled_by_default(self): |
| 303 | + metric_reader = PrometheusMetricReader() |
| 304 | + provider = MeterProvider( |
| 305 | + metric_readers=[metric_reader], resource=Resource({"os": "Unix", "histo": 1}) |
| 306 | + ) |
| 307 | + meter = provider.get_meter("getting-started", "0.1.2") |
| 308 | + counter = meter.create_counter("counter") |
| 309 | + counter.add(1) |
| 310 | + result = list(metric_reader._collector.collect()) |
| 311 | + |
| 312 | + for prometheus_metric in result[:0]: |
| 313 | + self.assertEqual(type(prometheus_metric), InfoMetricFamily) |
| 314 | + self.assertEqual(prometheus_metric.name, "target") |
| 315 | + self.assertEqual( |
| 316 | + prometheus_metric.documentation, "Target metadata" |
| 317 | + ) |
| 318 | + self.assertTrue(len(prometheus_metric.samples) == 1) |
| 319 | + self.assertEqual(prometheus_metric.samples[0].value, 1) |
| 320 | + self.assertTrue(len(prometheus_metric.samples[0].labels) == 2) |
| 321 | + self.assertEqual(prometheus_metric.samples[0].labels["os"], "Unix") |
| 322 | + self.assertEqual(prometheus_metric.samples[0].labels["histo"], "1") |
| 323 | + |
| 324 | + def test_target_info_disabled(self): |
| 325 | + metric_reader = PrometheusMetricReader(disable_target_info=True) |
| 326 | + provider = MeterProvider( |
| 327 | + metric_readers=[metric_reader], resource=Resource({"os": "Unix", "histo": 1}) |
| 328 | + ) |
| 329 | + meter = provider.get_meter("getting-started", "0.1.2") |
| 330 | + counter = meter.create_counter("counter") |
| 331 | + counter.add(1) |
| 332 | + result = list(metric_reader._collector.collect()) |
| 333 | + |
| 334 | + for prometheus_metric in result: |
| 335 | + self.assertNotEquals(type(prometheus_metric), InfoMetricFamily) |
| 336 | + self.assertNotEquals(prometheus_metric.name, "target") |
| 337 | + self.assertNotEquals( |
| 338 | + prometheus_metric.documentation, "Target metadata" |
| 339 | + ) |
| 340 | + self.assertNotIn("os", prometheus_metric.samples[0].labels) |
| 341 | + self.assertNotIn("histo", prometheus_metric.samples[0].labels) |
0 commit comments