File tree 5 files changed +50
-0
lines changed
5 files changed +50
-0
lines changed Original file line number Diff line number Diff line change @@ -16,6 +16,8 @@ Released 2020-06-10
16
16
([ #764 ] ( https://github.com/open-telemetry/opentelemetry-python/pull/764 ) )
17
17
- Add SumObserver and UpDownSumObserver in metrics
18
18
([ #789 ] ( https://github.com/open-telemetry/opentelemetry-python/pull/789 ) )
19
+ - Log a warning when replacing the global Tracer/Meter provider
20
+ ([ #856 ] ( https://github.com/open-telemetry/opentelemetry-python/pull/856 ) )
19
21
20
22
## 0.8b0
21
23
Original file line number Diff line number Diff line change @@ -460,6 +460,10 @@ def get_meter(
460
460
def set_meter_provider (meter_provider : MeterProvider ) -> None :
461
461
"""Sets the current global :class:`~.MeterProvider` object."""
462
462
global _METER_PROVIDER # pylint: disable=global-statement
463
+
464
+ if _METER_PROVIDER is not None :
465
+ logger .warning ("Overriding current MeterProvider" )
466
+
463
467
_METER_PROVIDER = meter_provider
464
468
465
469
Original file line number Diff line number Diff line change @@ -463,6 +463,10 @@ def get_tracer(
463
463
def set_tracer_provider (tracer_provider : TracerProvider ) -> None :
464
464
"""Sets the current global :class:`~.TracerProvider` object."""
465
465
global _TRACER_PROVIDER # pylint: disable=global-statement
466
+
467
+ if _TRACER_PROVIDER is not None :
468
+ logger .warning ("Overriding current TracerProvider" )
469
+
466
470
_TRACER_PROVIDER = tracer_provider
467
471
468
472
Original file line number Diff line number Diff line change
1
+ # type:ignore
2
+ import unittest
3
+ from logging import WARNING
4
+
5
+ from opentelemetry import metrics
6
+ from opentelemetry .sdk .metrics import MeterProvider
7
+
8
+
9
+ class TestGlobals (unittest .TestCase ):
10
+ def test_meter_provider_override_warning (self ):
11
+ """metrics.set_meter_provider should throw a warning when overridden"""
12
+ metrics .set_meter_provider (MeterProvider ())
13
+ with self .assertLogs (level = WARNING ) as test :
14
+ metrics .set_meter_provider (MeterProvider ())
15
+ self .assertEqual (
16
+ test .output ,
17
+ [
18
+ (
19
+ "WARNING:opentelemetry.metrics:Overriding current "
20
+ "MeterProvider"
21
+ )
22
+ ],
23
+ )
Original file line number Diff line number Diff line change 1
1
import unittest
2
+ from logging import WARNING
2
3
from unittest .mock import patch
3
4
4
5
from opentelemetry import context , trace
6
+ from opentelemetry .sdk .trace import TracerProvider # type:ignore
5
7
6
8
7
9
class TestGlobals (unittest .TestCase ):
@@ -20,6 +22,21 @@ def test_get_tracer(self):
20
22
trace .get_tracer ("foo" , "var" , mock_provider )
21
23
mock_provider .get_tracer .assert_called_with ("foo" , "var" )
22
24
25
+ def test_tracer_provider_override_warning (self ):
26
+ """trace.set_tracer_provider should throw a warning when overridden"""
27
+ trace .set_tracer_provider (TracerProvider ())
28
+ with self .assertLogs (level = WARNING ) as test :
29
+ trace .set_tracer_provider (TracerProvider ())
30
+ self .assertEqual (
31
+ test .output ,
32
+ [
33
+ (
34
+ "WARNING:opentelemetry.trace:Overriding current "
35
+ "TracerProvider"
36
+ )
37
+ ],
38
+ )
39
+
23
40
24
41
class TestTracer (unittest .TestCase ):
25
42
def setUp (self ):
You can’t perform that action at this time.
0 commit comments