def test_urllib_request_object(self): """ When making a request via urllib.request.urlopen with a urllib.request.Request object we return the original response we capture a span for the request """ req = Request(URL_200) with override_global_tracer(self.tracer): resp = urlopen(req) self.assertEqual(self.to_str(resp.read()), "") self.assertEqual(resp.getcode(), 200) spans = self.pop_spans() self.assertEqual(len(spans), 1) span = spans[0] self.assert_is_not_measured(span) self.assertEqual(span.span_type, "http") self.assertIsNone(span.service) self.assertEqual(span.name, self.SPAN_NAME) self.assertEqual(span.error, 0) self.assertEqual(span.get_tag("http.method"), "GET") assert_span_http_status_code(span, 200) self.assertEqual(span.get_tag("http.url"), URL_200)
def test_urllib_request_https(self): """ When making a request via urllib.urlopen when making an HTTPS connection we return the original response we capture a span for the request """ with override_global_tracer(self.tracer): resp = urllib.urlopen("https://httpbin.org/status/200") self.assertEqual(resp.read(), "") self.assertEqual(resp.getcode(), 200) spans = self.pop_spans() self.assertEqual(len(spans), 1) span = spans[0] self.assert_is_not_measured(span) self.assertEqual(span.span_type, "http") self.assertIsNone(span.service) self.assertEqual(span.name, "httplib.request") self.assertEqual(span.error, 0) self.assertEqual(span.get_tag("http.method"), "GET") assert_span_http_status_code(span, 200) self.assertEqual(span.get_tag("http.url"), "https://httpbin.org/status/200")
def test_correlation_identifiers_without_trace(self): # ensures `None` is returned if no Traces are active with override_global_tracer(self.tracer): trace_id, span_id = helpers.get_correlation_ids() self.assertIsNone(trace_id) self.assertIsNone(span_id)
def test_correlation_identifiers_missing_context(self): # ensures we return `None` if there is no current context self.tracer.current_trace_context = mock.MagicMock(return_value=None) with override_global_tracer(self.tracer): trace_id, span_id = helpers.get_correlation_ids() self.assertIsNone(trace_id) self.assertIsNone(span_id)
def test_correlation_identifiers_with_disabled_trace(self): # ensures `None` is returned if tracer is disabled with override_global_tracer(self.tracer): self.tracer.enabled = False self.tracer.trace("MockSpan") trace_id, span_id = helpers.get_correlation_ids() self.assertIsNone(trace_id) self.assertIsNone(span_id)
def test_correlation_identifiers(self): # ensures the right correlation identifiers are # returned when a Trace is active with override_global_tracer(self.tracer): span = self.tracer.trace("MockSpan") active_trace_id, active_span_id = span.trace_id, span.span_id trace_id, span_id = helpers.get_correlation_ids() self.assertEqual(trace_id, active_trace_id) self.assertEqual(span_id, active_span_id)
def test_requests_module_200(self): # ensure the requests API is instrumented even without # using a `Session` directly with override_global_tracer(self.tracer): out = requests.get(URL_200) assert out.status_code == 200 # validation spans = self.pop_spans() assert len(spans) == 1 s = spans[0] assert_is_measured(s) assert s.get_tag(http.METHOD) == "GET" assert_span_http_status_code(s, 200) assert s.error == 0 assert s.span_type == "http"