|
13 | 13 | # limitations under the License. |
14 | 14 |
|
15 | 15 | # pylint: disable=protected-access,no-self-use |
16 | | - |
17 | 16 | import weakref |
18 | | -from logging import WARNING |
| 17 | +from logging import DEBUG, WARNING |
19 | 18 | from time import sleep |
20 | 19 | from typing import Iterable, Sequence |
21 | 20 | from unittest.mock import MagicMock, Mock, patch |
|
36 | 35 | ) |
37 | 36 | from opentelemetry.sdk.metrics._internal import SynchronousMeasurementConsumer |
38 | 37 | from opentelemetry.sdk.metrics.export import ( |
| 38 | + InMemoryMetricReader, |
39 | 39 | Metric, |
40 | 40 | MetricExporter, |
41 | 41 | MetricExportResult, |
@@ -426,6 +426,36 @@ def test_consume_measurement_gauge(self, mock_sync_measurement_consumer): |
426 | 426 |
|
427 | 427 | sync_consumer_instance.consume_measurement.assert_called() |
428 | 428 |
|
| 429 | + def test_addition_of_metric_reader(self): |
| 430 | + # Suppress warnings for calling collect on an unregistered metric reader |
| 431 | + with self.assertLogs( |
| 432 | + "opentelemetry.sdk.metrics._internal.export", DEBUG |
| 433 | + ): |
| 434 | + reader = InMemoryMetricReader() |
| 435 | + meter_provider = MeterProvider() |
| 436 | + meter = meter_provider.get_meter(__name__) |
| 437 | + counter = meter.create_counter("counter") |
| 438 | + counter.add(1) |
| 439 | + self.assertIsNone(reader.get_metrics_data()) |
| 440 | + |
| 441 | + meter_provider.add_metric_reader(reader) |
| 442 | + counter.add(1) |
| 443 | + self.assertIsNotNone(reader.get_metrics_data()) |
| 444 | + |
| 445 | + with self.assertRaises(ValueError) as cm: |
| 446 | + meter_provider.add_metric_reader(reader) |
| 447 | + self.assertIn( |
| 448 | + "has been registered already!", str(cm.exception) |
| 449 | + ) |
| 450 | + |
| 451 | + meter_provider.remove_metric_reader(reader) |
| 452 | + counter.add(1) |
| 453 | + self.assertIsNone(reader.get_metrics_data()) |
| 454 | + |
| 455 | + with self.assertRaises(ValueError) as cm: |
| 456 | + meter_provider.remove_metric_reader(reader) |
| 457 | + self.assertIn("has not been registered!", str(cm.exception)) |
| 458 | + |
429 | 459 |
|
430 | 460 | class TestMeter(TestCase): |
431 | 461 | def setUp(self): |
|
0 commit comments