Skip to content

Commit

Permalink
Ensure httpx non-client methods are instrumented
Browse files Browse the repository at this point in the history
  • Loading branch information
rbagd authored and ocelotl committed May 30, 2024
1 parent 728976f commit 308fadc
Show file tree
Hide file tree
Showing 2 changed files with 24 additions and 2 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -564,11 +564,11 @@ def _instrument(self, **kwargs):
tracer_provider = kwargs.get("tracer_provider")
_InstrumentedClient._tracer_provider = tracer_provider
_InstrumentedAsyncClient._tracer_provider = tracer_provider
httpx.Client = _InstrumentedClient
httpx.Client = httpx._api.Client = _InstrumentedClient
httpx.AsyncClient = _InstrumentedAsyncClient

def _uninstrument(self, **kwargs):
httpx.Client = self._original_client
httpx.Client = httpx._api.Client = self._original_client
httpx.AsyncClient = self._original_async_client
_InstrumentedClient._tracer_provider = None
_InstrumentedClient._request_hook = None
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -532,12 +532,34 @@ def test_instrument_client(self):
self.assertEqual(result.text, "Hello!")
self.assert_span(num_spans=1)

def test_instrumentation_without_client(self):

HTTPXClientInstrumentor().instrument()
results = [
httpx.get(self.URL),
httpx.request("GET", self.URL),
]
with httpx.stream("GET", self.URL) as stream:
stream.read()
results.append(stream)

spans = self.assert_span(num_spans=len(results))
for idx, res in enumerate(results):
self.assertEqual(res.text, "Hello!")
self.assertEqual(
spans[idx].attributes[SpanAttributes.HTTP_URL], self.URL
)

HTTPXClientInstrumentor().uninstrument()

def test_uninstrument(self):
HTTPXClientInstrumentor().instrument()
HTTPXClientInstrumentor().uninstrument()
client = self.create_client()
result = self.perform_request(self.URL, client=client)
result_no_client = httpx.get(self.URL)
self.assertEqual(result.text, "Hello!")
self.assertEqual(result_no_client.text, "Hello!")
self.assert_span(num_spans=0)

def test_uninstrument_client(self):
Expand Down

0 comments on commit 308fadc

Please sign in to comment.