13
13
# limitations under the License.
14
14
15
15
from importlib import reload
16
+ from os import environ
16
17
from unittest import TestCase
17
- from unittest .mock import patch
18
+ from unittest .mock import Mock , patch
18
19
19
20
from opentelemetry .baggage .propagation import BaggagePropagator
21
+ from opentelemetry .configuration import Configuration
20
22
from opentelemetry .trace .propagation .tracecontext import (
21
23
TraceContextTextMapPropagator ,
22
24
)
@@ -41,3 +43,41 @@ def test_propagators(propagators):
41
43
import opentelemetry .propagators
42
44
43
45
reload (opentelemetry .propagators )
46
+
47
+ @patch .dict (environ , {"OTEL_PROPAGATORS" : "a,b,c" })
48
+ @patch ("opentelemetry.propagators.composite.CompositeHTTPPropagator" )
49
+ @patch ("pkg_resources.iter_entry_points" )
50
+ def test_non_default_propagators (
51
+ self , mock_iter_entry_points , mock_compositehttppropagator
52
+ ):
53
+
54
+ Configuration ._reset ()
55
+
56
+ def iter_entry_points_mock (_ , propagator ):
57
+ return iter (
58
+ [
59
+ Mock (
60
+ ** {
61
+ "load.side_effect" : [
62
+ Mock (** {"side_effect" : [propagator ]})
63
+ ]
64
+ }
65
+ )
66
+ ]
67
+ )
68
+
69
+ mock_iter_entry_points .configure_mock (
70
+ ** {"side_effect" : iter_entry_points_mock }
71
+ )
72
+
73
+ def test_propagators (propagators ):
74
+
75
+ self .assertEqual (propagators , ["a" , "b" , "c" ])
76
+
77
+ mock_compositehttppropagator .configure_mock (
78
+ ** {"side_effect" : test_propagators }
79
+ )
80
+
81
+ import opentelemetry .propagators
82
+
83
+ reload (opentelemetry .propagators )
0 commit comments