Skip to content

Commit 308fadc

Browse files
rbagdocelotl
authored andcommitted
Ensure httpx non-client methods are instrumented
1 parent 728976f commit 308fadc

File tree

2 files changed

+24
-2
lines changed

2 files changed

+24
-2
lines changed

instrumentation/opentelemetry-instrumentation-httpx/src/opentelemetry/instrumentation/httpx/__init__.py

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -564,11 +564,11 @@ def _instrument(self, **kwargs):
564564
tracer_provider = kwargs.get("tracer_provider")
565565
_InstrumentedClient._tracer_provider = tracer_provider
566566
_InstrumentedAsyncClient._tracer_provider = tracer_provider
567-
httpx.Client = _InstrumentedClient
567+
httpx.Client = httpx._api.Client = _InstrumentedClient
568568
httpx.AsyncClient = _InstrumentedAsyncClient
569569

570570
def _uninstrument(self, **kwargs):
571-
httpx.Client = self._original_client
571+
httpx.Client = httpx._api.Client = self._original_client
572572
httpx.AsyncClient = self._original_async_client
573573
_InstrumentedClient._tracer_provider = None
574574
_InstrumentedClient._request_hook = None

instrumentation/opentelemetry-instrumentation-httpx/tests/test_httpx_integration.py

Lines changed: 22 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -532,12 +532,34 @@ def test_instrument_client(self):
532532
self.assertEqual(result.text, "Hello!")
533533
self.assert_span(num_spans=1)
534534

535+
def test_instrumentation_without_client(self):
536+
537+
HTTPXClientInstrumentor().instrument()
538+
results = [
539+
httpx.get(self.URL),
540+
httpx.request("GET", self.URL),
541+
]
542+
with httpx.stream("GET", self.URL) as stream:
543+
stream.read()
544+
results.append(stream)
545+
546+
spans = self.assert_span(num_spans=len(results))
547+
for idx, res in enumerate(results):
548+
self.assertEqual(res.text, "Hello!")
549+
self.assertEqual(
550+
spans[idx].attributes[SpanAttributes.HTTP_URL], self.URL
551+
)
552+
553+
HTTPXClientInstrumentor().uninstrument()
554+
535555
def test_uninstrument(self):
536556
HTTPXClientInstrumentor().instrument()
537557
HTTPXClientInstrumentor().uninstrument()
538558
client = self.create_client()
539559
result = self.perform_request(self.URL, client=client)
560+
result_no_client = httpx.get(self.URL)
540561
self.assertEqual(result.text, "Hello!")
562+
self.assertEqual(result_no_client.text, "Hello!")
541563
self.assert_span(num_spans=0)
542564

543565
def test_uninstrument_client(self):

0 commit comments

Comments
 (0)