async def test_multiple_requests(tracer): with BaseTestCase.override_http_config("asgi", dict(trace_query_string=True)): app = TraceMiddleware(basic_app, tracer=tracer) async with httpx.AsyncClient(app=app) as client: responses = await asyncio.gather( client.get("http://testserver/", params={"sleep": True}), client.get("http://testserver/", params={"sleep": True}), ) assert len(responses) == 2 assert [r.status_code for r in responses] == [200] * 2 assert [r.text for r in responses] == ["sleep"] * 2 spans = tracer.writer.pop_traces() assert len(spans) == 2 assert len(spans[0]) == 1 assert len(spans[1]) == 1 r1_span = spans[0][0] assert r1_span.name == "asgi.request" assert r1_span.get_tag("http.method") == "GET" assert r1_span.get_tag("http.url") == "http://testserver/" assert r1_span.get_tag("http.query.string") == "sleep=true" r2_span = spans[0][0] assert r2_span.name == "asgi.request" assert r2_span.get_tag("http.method") == "GET" assert r2_span.get_tag("http.url") == "http://testserver/" assert r2_span.get_tag("http.query.string") == "sleep=true"
def test_trace_query_string_integration_enabled(client, test_spans): with BaseTestCase.override_http_config("django", dict(trace_query_string=True)): assert client.get("/?key1=value1&key2=value2").status_code == 200 sp_request = test_spans.get_root_span() assert sp_request.name == "django.request" assert sp_request.get_tag(http.QUERY_STRING) == "key1=value1&key2=value2"
async def test_query_string(scope, tracer): with BaseTestCase.override_http_config("asgi", dict(trace_query_string=True)): app = TraceMiddleware(basic_app, tracer=tracer) scope["query_string"] = "foo=bar" instance = ApplicationCommunicator(app, scope) await instance.send_input({"type": "http.request", "body": b""}) response_start = await instance.receive_output(1) assert response_start == { "type": "http.response.start", "status": 200, "headers": [[b"Content-Type", b"text/plain"]], } response_body = await instance.receive_output(1) assert response_body == { "type": "http.response.body", "body": b"*", } spans = tracer.writer.pop_traces() assert len(spans) == 1 assert len(spans[0]) == 1 request_span = spans[0][0] assert request_span.name == "asgi.request" assert request_span.error == 0 _check_span_tags(scope, request_span)