|
13 | 13 | # limitations under the License. |
14 | 14 |
|
15 | 15 |
|
16 | | -import urllib |
17 | 16 | from timeit import default_timer |
18 | 17 | from typing import Optional, Union |
19 | 18 | from urllib import request |
|
24 | 23 | from opentelemetry.instrumentation.urllib import ( # pylint: disable=no-name-in-module,import-error |
25 | 24 | URLLibInstrumentor, |
26 | 25 | ) |
27 | | -from opentelemetry.semconv.metrics import MetricInstruments |
28 | 26 | from opentelemetry.sdk.metrics._internal.point import Metric |
29 | 27 | from opentelemetry.sdk.metrics.export import ( |
30 | 28 | HistogramDataPoint, |
31 | 29 | NumberDataPoint, |
32 | 30 | ) |
| 31 | +from opentelemetry.semconv.metrics import MetricInstruments |
33 | 32 | from opentelemetry.test.test_base import TestBase |
34 | 33 |
|
35 | 34 |
|
@@ -111,138 +110,137 @@ def assert_metric_expected( |
111 | 110 |
|
112 | 111 | def test_basic_metric(self): |
113 | 112 | start_time = default_timer() |
114 | | - result = urllib.request.urlopen(self.URL) |
115 | | - client_duration_estimated = (default_timer() - start_time) * 1000 |
| 113 | + with request.urlopen(self.URL) as result: |
| 114 | + client_duration_estimated = (default_timer() - start_time) * 1000 |
116 | 115 |
|
117 | | - metrics = self.get_sorted_metrics() |
118 | | - self.assertEqual(len(metrics), 3) |
| 116 | + metrics = self.get_sorted_metrics() |
| 117 | + self.assertEqual(len(metrics), 3) |
119 | 118 |
|
120 | | - ( |
121 | | - client_duration, |
122 | | - client_request_size, |
123 | | - client_response_size, |
124 | | - ) = metrics[:3] |
| 119 | + ( |
| 120 | + client_duration, |
| 121 | + client_request_size, |
| 122 | + client_response_size, |
| 123 | + ) = metrics[:3] |
125 | 124 |
|
126 | | - self.assertEqual( |
127 | | - client_duration.name, MetricInstruments.HTTP_CLIENT_DURATION |
128 | | - ) |
129 | | - self.assert_metric_expected( |
130 | | - client_duration, |
131 | | - client_duration_estimated, |
132 | | - { |
133 | | - "http.status_code": str(result.code), |
134 | | - "http.method": "GET", |
135 | | - "http.url": str(result.url), |
136 | | - "http.flavor": "1.1", |
137 | | - }, |
138 | | - est_delta=200, |
139 | | - ) |
| 125 | + self.assertEqual( |
| 126 | + client_duration.name, MetricInstruments.HTTP_CLIENT_DURATION |
| 127 | + ) |
| 128 | + self.assert_metric_expected( |
| 129 | + client_duration, |
| 130 | + client_duration_estimated, |
| 131 | + { |
| 132 | + "http.status_code": str(result.code), |
| 133 | + "http.method": "GET", |
| 134 | + "http.url": str(result.url), |
| 135 | + "http.flavor": "1.1", |
| 136 | + }, |
| 137 | + est_delta=200, |
| 138 | + ) |
140 | 139 |
|
141 | | - # net.peer.name |
| 140 | + # net.peer.name |
142 | 141 |
|
143 | | - self.assertEqual( |
144 | | - client_request_size.name, |
145 | | - MetricInstruments.HTTP_CLIENT_REQUEST_SIZE, |
146 | | - ) |
147 | | - self.assert_metric_expected( |
148 | | - client_request_size, |
149 | | - 0, |
150 | | - { |
151 | | - "http.status_code": str(result.code), |
152 | | - "http.method": "GET", |
153 | | - "http.url": str(result.url), |
154 | | - "http.flavor": "1.1", |
155 | | - }, |
156 | | - ) |
| 142 | + self.assertEqual( |
| 143 | + client_request_size.name, |
| 144 | + MetricInstruments.HTTP_CLIENT_REQUEST_SIZE, |
| 145 | + ) |
| 146 | + self.assert_metric_expected( |
| 147 | + client_request_size, |
| 148 | + 0, |
| 149 | + { |
| 150 | + "http.status_code": str(result.code), |
| 151 | + "http.method": "GET", |
| 152 | + "http.url": str(result.url), |
| 153 | + "http.flavor": "1.1", |
| 154 | + }, |
| 155 | + ) |
157 | 156 |
|
158 | | - self.assertEqual( |
159 | | - client_response_size.name, |
160 | | - MetricInstruments.HTTP_CLIENT_RESPONSE_SIZE, |
161 | | - ) |
162 | | - self.assert_metric_expected( |
163 | | - client_response_size, |
164 | | - result.length, |
165 | | - { |
166 | | - "http.status_code": str(result.code), |
167 | | - "http.method": "GET", |
168 | | - "http.url": str(result.url), |
169 | | - "http.flavor": "1.1", |
170 | | - }, |
171 | | - ) |
| 157 | + self.assertEqual( |
| 158 | + client_response_size.name, |
| 159 | + MetricInstruments.HTTP_CLIENT_RESPONSE_SIZE, |
| 160 | + ) |
| 161 | + self.assert_metric_expected( |
| 162 | + client_response_size, |
| 163 | + result.length, |
| 164 | + { |
| 165 | + "http.status_code": str(result.code), |
| 166 | + "http.method": "GET", |
| 167 | + "http.url": str(result.url), |
| 168 | + "http.flavor": "1.1", |
| 169 | + }, |
| 170 | + ) |
172 | 171 |
|
173 | 172 | def test_basic_metric_request_not_empty(self): |
174 | 173 | data = {"header1": "value1", "header2": "value2"} |
175 | | - data_encoded = urllib.parse.urlencode(data).encode() |
| 174 | + data_encoded = urlencode(data).encode() |
176 | 175 |
|
177 | 176 | start_time = default_timer() |
178 | | - result = urllib.request.urlopen(self.URL_POST, data=data_encoded) |
179 | | - client_duration_estimated = (default_timer() - start_time) * 1000 |
| 177 | + with request.urlopen(self.URL_POST, data=data_encoded) as result: |
| 178 | + client_duration_estimated = (default_timer() - start_time) * 1000 |
180 | 179 |
|
181 | | - metrics = self.get_sorted_metrics() |
182 | | - self.assertEqual(len(metrics), 3) |
| 180 | + metrics = self.get_sorted_metrics() |
| 181 | + self.assertEqual(len(metrics), 3) |
183 | 182 |
|
184 | | - ( |
185 | | - client_duration, |
186 | | - client_request_size, |
187 | | - client_response_size, |
188 | | - ) = metrics[:3] |
| 183 | + ( |
| 184 | + client_duration, |
| 185 | + client_request_size, |
| 186 | + client_response_size, |
| 187 | + ) = metrics[:3] |
189 | 188 |
|
190 | | - self.assertEqual( |
191 | | - client_duration.name, MetricInstruments.HTTP_CLIENT_DURATION |
192 | | - ) |
193 | | - self.assert_metric_expected( |
194 | | - client_duration, |
195 | | - client_duration_estimated, |
196 | | - { |
197 | | - "http.status_code": str(result.code), |
198 | | - "http.method": "POST", |
199 | | - "http.url": str(result.url), |
200 | | - "http.flavor": "1.1", |
201 | | - }, |
202 | | - est_delta=200, |
203 | | - ) |
| 189 | + self.assertEqual( |
| 190 | + client_duration.name, MetricInstruments.HTTP_CLIENT_DURATION |
| 191 | + ) |
| 192 | + self.assert_metric_expected( |
| 193 | + client_duration, |
| 194 | + client_duration_estimated, |
| 195 | + { |
| 196 | + "http.status_code": str(result.code), |
| 197 | + "http.method": "POST", |
| 198 | + "http.url": str(result.url), |
| 199 | + "http.flavor": "1.1", |
| 200 | + }, |
| 201 | + est_delta=200, |
| 202 | + ) |
204 | 203 |
|
205 | | - self.assertEqual( |
206 | | - client_request_size.name, |
207 | | - MetricInstruments.HTTP_CLIENT_REQUEST_SIZE, |
208 | | - ) |
209 | | - self.assert_metric_expected( |
210 | | - client_request_size, |
211 | | - len(data_encoded), |
212 | | - { |
213 | | - "http.status_code": str(result.code), |
214 | | - "http.method": "POST", |
215 | | - "http.url": str(result.url), |
216 | | - "http.flavor": "1.1", |
217 | | - }, |
218 | | - ) |
| 204 | + self.assertEqual( |
| 205 | + client_request_size.name, |
| 206 | + MetricInstruments.HTTP_CLIENT_REQUEST_SIZE, |
| 207 | + ) |
| 208 | + self.assert_metric_expected( |
| 209 | + client_request_size, |
| 210 | + len(data_encoded), |
| 211 | + { |
| 212 | + "http.status_code": str(result.code), |
| 213 | + "http.method": "POST", |
| 214 | + "http.url": str(result.url), |
| 215 | + "http.flavor": "1.1", |
| 216 | + }, |
| 217 | + ) |
219 | 218 |
|
220 | | - self.assertEqual( |
221 | | - client_response_size.name, |
222 | | - MetricInstruments.HTTP_CLIENT_RESPONSE_SIZE, |
223 | | - ) |
224 | | - self.assert_metric_expected( |
225 | | - client_response_size, |
226 | | - result.length, |
227 | | - { |
228 | | - "http.status_code": str(result.code), |
229 | | - "http.method": "POST", |
230 | | - "http.url": str(result.url), |
231 | | - "http.flavor": "1.1", |
232 | | - }, |
233 | | - ) |
| 219 | + self.assertEqual( |
| 220 | + client_response_size.name, |
| 221 | + MetricInstruments.HTTP_CLIENT_RESPONSE_SIZE, |
| 222 | + ) |
| 223 | + self.assert_metric_expected( |
| 224 | + client_response_size, |
| 225 | + result.length, |
| 226 | + { |
| 227 | + "http.status_code": str(result.code), |
| 228 | + "http.method": "POST", |
| 229 | + "http.url": str(result.url), |
| 230 | + "http.flavor": "1.1", |
| 231 | + }, |
| 232 | + ) |
234 | 233 |
|
235 | 234 | def test_metric_uninstrument(self): |
236 | | - urllib.request.urlopen(self.URL) |
237 | | - metrics = self.get_sorted_metrics() |
238 | | - self.assertEqual(len(metrics), 3) |
239 | | - |
240 | | - URLLibInstrumentor().uninstrument() |
241 | | - urllib.request.urlopen(self.URL) |
242 | | - |
243 | | - metrics = self.get_sorted_metrics() |
244 | | - self.assertEqual(len(metrics), 3) |
245 | | - |
246 | | - for metric in metrics: |
247 | | - for point in list(metric.data.data_points): |
248 | | - self.assertEqual(point.count, 1) |
| 235 | + with request.urlopen(self.URL): |
| 236 | + metrics = self.get_sorted_metrics() |
| 237 | + self.assertEqual(len(metrics), 3) |
| 238 | + |
| 239 | + URLLibInstrumentor().uninstrument() |
| 240 | + with request.urlopen(self.URL): |
| 241 | + metrics = self.get_sorted_metrics() |
| 242 | + self.assertEqual(len(metrics), 3) |
| 243 | + |
| 244 | + for metric in metrics: |
| 245 | + for point in list(metric.data.data_points): |
| 246 | + self.assertEqual(point.count, 1) |
0 commit comments