|
1 | 1 | import unittest |
2 | | -import requests |
3 | 2 |
|
| 3 | +import requests |
4 | 4 | from requests import Session |
5 | 5 | from requests.exceptions import MissingSchema |
6 | | -from nose.tools import eq_, assert_raises |
7 | 6 |
|
8 | 7 | from ddtrace import config |
9 | | -from ddtrace.ext import http, errors |
10 | 8 | from ddtrace.contrib.requests import patch, unpatch |
11 | | - |
| 9 | +from ddtrace.ext import errors, http |
| 10 | +from nose.tools import assert_raises, eq_ |
12 | 11 | from tests.opentracer.utils import init_tracer |
13 | | -from ...util import override_global_tracer |
| 12 | + |
14 | 13 | from ...test_tracer import get_dummy_tracer |
| 14 | +from ...util import override_global_tracer |
15 | 15 |
|
16 | 16 | # socket name comes from https://english.stackexchange.com/a/44048 |
17 | 17 | SOCKET = 'httpbin.org' |
@@ -105,6 +105,20 @@ def test_200(self): |
105 | 105 | eq_(s.error, 0) |
106 | 106 | eq_(s.span_type, http.TYPE) |
107 | 107 |
|
| 108 | + def test_200_query_string(self): |
| 109 | + # ensure query string is removed before adding url to metadata |
| 110 | + out = self.session.get(URL_200 + '?key=value&key2=value2') |
| 111 | + eq_(out.status_code, 200) |
| 112 | + # validation |
| 113 | + spans = self.tracer.writer.pop() |
| 114 | + eq_(len(spans), 1) |
| 115 | + s = spans[0] |
| 116 | + eq_(s.get_tag(http.METHOD), 'GET') |
| 117 | + eq_(s.get_tag(http.STATUS_CODE), '200') |
| 118 | + eq_(s.get_tag(http.URL), URL_200) |
| 119 | + eq_(s.error, 0) |
| 120 | + eq_(s.span_type, http.TYPE) |
| 121 | + |
108 | 122 | def test_requests_module_200(self): |
109 | 123 | # ensure the requests API is instrumented even without |
110 | 124 | # using a `Session` directly |
|
0 commit comments