16
16
import unittest
17
17
from unittest import mock
18
18
19
+ import pkg_resources
19
20
import requests
20
21
import urllib3
21
22
@@ -28,7 +29,16 @@ class TestRequestsIntegration(unittest.TestCase):
28
29
# TODO: Copy & paste from test_wsgi_middleware
29
30
def setUp (self ):
30
31
self .span_attrs = {}
31
- self .tracer = trace .tracer ()
32
+ self .tracer_source = trace .TracerSource ()
33
+ self .tracer = trace .Tracer ()
34
+ self .get_tracer_patcher = mock .patch .object (
35
+ self .tracer_source ,
36
+ "get_tracer" ,
37
+ autospec = True ,
38
+ spec_set = True ,
39
+ return_value = self .tracer ,
40
+ )
41
+ self .get_tracer = self .get_tracer_patcher .start ()
32
42
self .span_context_manager = mock .MagicMock ()
33
43
self .span = mock .create_autospec (trace .Span , spec_set = True )
34
44
self .span_context_manager .__enter__ .return_value = self .span
@@ -45,7 +55,6 @@ def setspanattr(key, value):
45
55
spec_set = True ,
46
56
return_value = self .span_context_manager ,
47
57
)
48
- self .start_as_current_span = self .start_span_patcher .start ()
49
58
50
59
mocked_response = requests .models .Response ()
51
60
mocked_response .status_code = 200
@@ -57,20 +66,29 @@ def setspanattr(key, value):
57
66
spec_set = True ,
58
67
return_value = mocked_response ,
59
68
)
69
+
70
+ self .start_as_current_span = self .start_span_patcher .start ()
60
71
self .send = self .send_patcher .start ()
61
72
62
- opentelemetry .ext .http_requests .enable (self .tracer )
73
+ opentelemetry .ext .http_requests .enable (self .tracer_source )
74
+ distver = pkg_resources .get_distribution (
75
+ "opentelemetry-ext-http-requests"
76
+ ).version
77
+ self .get_tracer .assert_called_with (
78
+ opentelemetry .ext .http_requests .__name__ , distver
79
+ )
63
80
64
81
def tearDown (self ):
65
82
opentelemetry .ext .http_requests .disable ()
83
+ self .get_tracer_patcher .stop ()
66
84
self .send_patcher .stop ()
67
85
self .start_span_patcher .stop ()
68
86
69
87
def test_basic (self ):
70
88
url = "https://www.example.org/foo/bar?x=y#top"
71
89
requests .get (url = url )
72
90
self .assertEqual (1 , len (self .send .call_args_list ))
73
- self .tracer .start_as_current_span .assert_called_with (
91
+ self .tracer .start_as_current_span .assert_called_with ( # pylint:disable=no-member
74
92
"/foo/bar" , kind = trace .SpanKind .CLIENT
75
93
)
76
94
self .span_context_manager .__enter__ .assert_called_with ()
@@ -96,11 +114,12 @@ def test_invalid_url(self):
96
114
97
115
with self .assertRaises (exception_type ):
98
116
requests .post (url = url )
117
+ call_args = (
118
+ self .tracer .start_as_current_span .call_args # pylint:disable=no-member
119
+ )
99
120
self .assertTrue (
100
- self .tracer .start_as_current_span .call_args [0 ][0 ].startswith (
101
- "<Unparsable URL"
102
- ),
103
- msg = self .tracer .start_as_current_span .call_args ,
121
+ call_args [0 ][0 ].startswith ("<Unparsable URL" ),
122
+ msg = self .tracer .start_as_current_span .call_args , # pylint:disable=no-member
104
123
)
105
124
self .span_context_manager .__enter__ .assert_called_with ()
106
125
exitspan = self .span_context_manager .__exit__
0 commit comments