def test_wrap_requests(self): mock_return = mock.Mock() mock_return.status_code = 200 return_value = mock_return mock_func = mock.Mock() mock_func.__name__ = 'get' mock_func.return_value = return_value mock_tracer = MockTracer() patch = mock.patch( 'opencensus.ext.requests.trace.execution_context.' 'get_opencensus_tracer', return_value=mock_tracer) patch_thread = mock.patch( 'opencensus.ext.requests.trace.execution_context.' 'is_exporter', return_value=False) wrapped = trace.wrap_requests(mock_func) url = 'http://localhost:8080' with patch, patch_thread: wrapped(url) expected_attributes = {'http.url': url, 'http.status_code': '200'} expected_name = '[requests]get' self.assertEqual(span_module.SpanKind.CLIENT, mock_tracer.current_span.span_kind) self.assertEqual(expected_attributes, mock_tracer.current_span.attributes) self.assertEqual(expected_name, mock_tracer.current_span.name)
def test_wrap_requests_exporter_thread(self): mock_return = mock.Mock() mock_return.status_code = 200 return_value = mock_return mock_func = mock.Mock() mock_func.__name__ = 'get' mock_func.return_value = return_value mock_tracer = MockTracer() patch_tracer = mock.patch( 'opencensus.ext.requests.trace.execution_context.' 'get_opencensus_tracer', return_value=mock_tracer) patch_attr = mock.patch( 'opencensus.ext.requests.trace.execution_context.' 'get_opencensus_attr', return_value=['localhost:8080']) patch_thread = mock.patch( 'opencensus.ext.requests.trace.execution_context.' 'is_exporter', return_value=True) wrapped = trace.wrap_requests(mock_func) url = 'http://localhost:8080' with patch_tracer, patch_attr, patch_thread: wrapped(url) self.assertEqual(None, mock_tracer.current_span)
def test_wrap_requests_blacklist_ok(self): mock_return = mock.Mock() mock_return.status_code = 200 return_value = mock_return mock_func = mock.Mock() mock_func.__name__ = 'get' mock_func.return_value = return_value mock_tracer = MockTracer() patch_tracer = mock.patch( 'opencensus.ext.requests.trace.execution_context.' 'get_opencensus_tracer', return_value=mock_tracer) patch_attr = mock.patch( 'opencensus.ext.requests.trace.execution_context.' 'get_opencensus_attr', return_value=['localhost:8080']) wrapped = trace.wrap_requests(mock_func) url = 'http://localhost' with patch_tracer, patch_attr: wrapped(url) expected_name = '[requests]get' self.assertEqual(expected_name, mock_tracer.current_span.name)
def test_wrap_requests_exception(self): mock_return = mock.Mock() mock_return.status_code = 200 return_value = mock_return mock_func = mock.Mock() mock_func.__name__ = 'get' mock_func.return_value = return_value mock_func.side_effect = requests.TooManyRedirects mock_tracer = MockTracer() patch = mock.patch( 'opencensus.ext.requests.trace.execution_context.' 'get_opencensus_tracer', return_value=mock_tracer) patch_thread = mock.patch( 'opencensus.ext.requests.trace.execution_context.' 'is_exporter', return_value=False) wrapped = trace.wrap_requests(mock_func) url = 'http://localhost:8080/test' with patch, patch_thread: with self.assertRaises(requests.TooManyRedirects): wrapped(url) expected_attributes = { 'component': 'HTTP', 'http.host': 'localhost:8080', 'http.method': 'GET', 'http.path': '/test', 'http.url': url, } expected_name = '/test' expected_status = status_module.Status(2, '') self.assertEqual(span_module.SpanKind.CLIENT, mock_tracer.current_span.span_kind) self.assertEqual(expected_attributes, mock_tracer.current_span.attributes) self.assertEqual(expected_name, mock_tracer.current_span.name) self.assertEqual(expected_status.__dict__, mock_tracer.current_span.status.__dict__) self.assertRaises(requests.TooManyRedirects, mock_func)