1616import unittest
1717from contextlib import contextmanager
1818
19+ from opentelemetry import metrics as metrics_api
1920from opentelemetry import trace as trace_api
21+ from opentelemetry .sdk .metrics import MeterProvider
22+ from opentelemetry .sdk .metrics .export .in_memory_metrics_exporter import (
23+ InMemoryMetricsExporter ,
24+ )
2025from opentelemetry .sdk .trace import TracerProvider , export
2126from opentelemetry .sdk .trace .export .in_memory_span_exporter import (
2227 InMemorySpanExporter ,
2631class TestBase (unittest .TestCase ):
2732 @classmethod
2833 def setUpClass (cls ):
29- cls .original_provider = trace_api .get_tracer_provider ()
34+ cls .original_tracer_provider = trace_api .get_tracer_provider ()
3035 result = cls .create_tracer_provider ()
3136 cls .tracer_provider , cls .memory_exporter = result
3237 trace_api .set_tracer_provider (cls .tracer_provider )
38+ cls .original_meter_provider = metrics_api .get_meter_provider ()
39+ result = cls .create_meter_provider ()
40+ cls .meter_provider , cls .memory_metrics_exporter = result
41+ metrics_api .set_meter_provider (cls .meter_provider )
3342
3443 @classmethod
3544 def tearDownClass (cls ):
36- trace_api .set_tracer_provider (cls .original_provider )
45+ trace_api .set_tracer_provider (cls .original_tracer_provider )
46+ metrics_api .set_meter_provider (cls .original_meter_provider )
3747
3848 def setUp (self ):
3949 self .memory_exporter .clear ()
@@ -53,7 +63,7 @@ def create_tracer_provider(**kwargs):
5363
5464 Returns:
5565 A list with the tracer provider in the first element and the
56- memory exporter in the second.
66+ in- memory span exporter in the second.
5767 """
5868 tracer_provider = TracerProvider (** kwargs )
5969 memory_exporter = InMemorySpanExporter ()
@@ -62,6 +72,20 @@ def create_tracer_provider(**kwargs):
6272
6373 return tracer_provider , memory_exporter
6474
75+ @staticmethod
76+ def create_meter_provider (** kwargs ):
77+ """Helper to create a configured meter provider
78+
79+ Creates a `MeterProvider` and an `InMemoryMetricsExporter`.
80+
81+ Returns:
82+ A list with the meter provider in the first element and the
83+ in-memory metrics exporter in the second
84+ """
85+ meter_provider = MeterProvider (** kwargs )
86+ memory_exporter = InMemoryMetricsExporter ()
87+ return meter_provider , memory_exporter
88+
6589 @staticmethod
6690 @contextmanager
6791 def disable_logging (highest_level = logging .CRITICAL ):
0 commit comments