diff --git a/.circleci/config.yml b/.circleci/config.yml index cc24953a698..07f2165e38b 100644 --- a/.circleci/config.yml +++ b/.circleci/config.yml @@ -444,15 +444,15 @@ jobs: pattern: '^falcon_contrib' django: - executor: ddtrace_dev - docker: - - image: *ddtrace_dev_image - - image: *redis_image - - image: *memcached_image - - *datadog_agent + <<: *machine_executor steps: - - run_tox_scenario: - pattern: '^django_contrib' + - checkout + - run: SNAPSHOT_CI=1 docker-compose up -d memcached redis testagent + - run: + command: docker-compose logs -f + background: true + - run: + command: ./scripts/ddtest scripts/run-tox-scenario '^django_contrib-' djangorestframework: executor: ddtrace_dev diff --git a/ddtrace/contrib/django/__init__.py b/ddtrace/contrib/django/__init__.py index 5ddb94d0cfe..afc977a7c49 100644 --- a/ddtrace/contrib/django/__init__.py +++ b/ddtrace/contrib/django/__init__.py @@ -252,9 +252,10 @@ with require_modules(required_modules) as missing_modules: if not missing_modules: from .middleware import TraceMiddleware + from . import patch as _patch from .patch import patch, unpatch - __all__ = ["patch", "unpatch", "TraceMiddleware"] + __all__ = ["patch", "unpatch", "TraceMiddleware", "_patch"] # define the Django app configuration diff --git a/ddtrace/contrib/django/patch.py b/ddtrace/contrib/django/patch.py index 9ee483c5d66..35b1fbcf7a7 100644 --- a/ddtrace/contrib/django/patch.py +++ b/ddtrace/contrib/django/patch.py @@ -465,13 +465,11 @@ def instrument_view(django, view): We want to wrap all lifecycle/http method functions for every class in the MRO for this view """ - if isfunction(view): - return _instrument_view(django, view) + if hasattr(view, "__mro__"): + for cls in reversed(getmro(view)): + _instrument_view(django, cls) - for cls in reversed(getmro(view)): - _instrument_view(django, cls) - - return view + return _instrument_view(django, view) def _instrument_view(django, view): diff --git a/releasenotes/notes/django-view-mro-check-782374fb9c427305.yaml b/releasenotes/notes/django-view-mro-check-782374fb9c427305.yaml new file mode 100644 index 00000000000..d61401b33a1 --- /dev/null +++ b/releasenotes/notes/django-view-mro-check-782374fb9c427305.yaml @@ -0,0 +1,4 @@ +--- +fixes: + - | + Check Django view before instrumenting MRO diff --git a/tests/__init__.py b/tests/__init__.py index 89757080de7..6582ee25094 100644 --- a/tests/__init__.py +++ b/tests/__init__.py @@ -9,7 +9,7 @@ import ddtrace from ddtrace import Tracer, Span -from ddtrace.compat import httplib +from ddtrace.compat import httplib, to_unicode from ddtrace.constants import SPAN_MEASURED_KEY from ddtrace.encoding import JSONEncoder from ddtrace.ext import http @@ -844,7 +844,7 @@ def wrapper(wrapped, instance, args, kwargs): r = conn.getresponse() if r.status != 200: # The test agent returns nice error messages we can forward to the user. - raise SnapshotFailed(r.read().decode()) + raise SnapshotFailed(r.read()) # Run the test. ret = wrapped(*args, **kwargs) @@ -855,14 +855,14 @@ def wrapper(wrapped, instance, args, kwargs): # Query for the results of the test. conn = httplib.HTTPConnection(tracer.writer.api.hostname, tracer.writer.api.port) conn.request("GET", "/test/snapshot?ignores=%s&token=%s" % (",".join(ignores), token)) - response = conn.getresponse() - if response.status != 200: - raise SnapshotFailed(response.read().decode()) + r = conn.getresponse() + if r.status != 200: + raise SnapshotFailed(r.read()) return ret except SnapshotFailed as e: # Fail the test if a failure has occurred and print out the # message we got from the test agent. - pytest.fail(str(e), pytrace=False) + pytest.fail(to_unicode(e.args[0]), pytrace=False) finally: conn.close() diff --git a/tests/contrib/django/conftest.py b/tests/contrib/django/conftest.py index 220a9e4cfd9..0e59f4f96e5 100644 --- a/tests/contrib/django/conftest.py +++ b/tests/contrib/django/conftest.py @@ -24,15 +24,17 @@ def pytest_configure(): django.setup() -@pytest.fixture(autouse=True) -def patch_django(tracer): +@pytest.fixture +def tracer(): + tracer = DummyTracer() # Patch Django and override tracer to be our test tracer pin = Pin.get_from(django) original_tracer = pin.tracer Pin.override(django, tracer=tracer) # Yield to our test - yield + yield tracer + tracer.writer.pop() # Reset the tracer pinned to Django and unpatch # DEV: unable to properly unpatch and reload django app with each test @@ -40,13 +42,6 @@ def patch_django(tracer): Pin.override(django, tracer=original_tracer) -@pytest.fixture -def tracer(): - tracer = DummyTracer() - yield tracer - tracer.writer.pop() - - @pytest.fixture def test_spans(tracer): container = TracerSpanContainer(tracer) diff --git a/tests/contrib/django/test_django.py b/tests/contrib/django/test_django.py index 99c7c4bad5e..62c3f41ecdd 100644 --- a/tests/contrib/django/test_django.py +++ b/tests/contrib/django/test_django.py @@ -500,19 +500,6 @@ def test_middleware_trace_function_based_view(client, test_spans): assert span.resource == "GET tests.contrib.django.views.function_view" -def test_middleware_trace_callable_view(client, test_spans): - # ensures that the internals are properly traced when using callable views - assert client.get("/feed-view/").status_code == 200 - - span = test_spans.get_root_span() - assert span.get_tag("http.status_code") == "200" - assert span.get_tag(http.URL) == "http://testserver/feed-view/" - if django.VERSION >= (2, 2, 0): - assert span.resource == "GET ^feed-view/$" - else: - assert span.resource == "GET tests.contrib.django.views.FeedView" - - def test_middleware_trace_errors(client, test_spans): # ensures that the internals are properly traced assert client.get("/fail-view/").status_code == 403 @@ -539,19 +526,6 @@ def test_middleware_trace_staticmethod(client, test_spans): assert span.resource == "GET tests.contrib.django.views.StaticMethodView" -def test_middleware_trace_partial_based_view(client, test_spans): - # ensures that the internals are properly traced when using a function views - assert client.get("/partial-view/").status_code == 200 - - span = test_spans.get_root_span() - assert span.get_tag("http.status_code") == "200" - assert span.get_tag(http.URL) == "http://testserver/partial-view/" - if django.VERSION >= (2, 2, 0): - assert span.resource == "GET ^partial-view/$" - else: - assert span.resource == "GET partial" - - def test_simple_view_get(client, test_spans): # The `get` method of a view should be traced assert client.get("/simple/").status_code == 200 @@ -1352,18 +1326,6 @@ def test_urlpatterns_path(client, test_spans): assert len(list(test_spans.filter_spans(name="django.view"))) == 1 -@pytest.mark.skipif(django.VERSION < (2, 0, 0), reason="include only exists in >=2.0.0") -def test_urlpatterns_include(client, test_spans): - """ - When a view is specified using `django.urls.include` - The view is traced - """ - assert client.get("/include/test/").status_code == 200 - - # Ensure the view was traced - assert len(list(test_spans.filter_spans(name="django.view"))) == 1 - - @pytest.mark.skipif(django.VERSION < (2, 0, 0), reason="repath only exists in >=2.0.0") def test_urlpatterns_repath(client, test_spans): """ diff --git a/tests/contrib/django/test_django_snapshots.py b/tests/contrib/django/test_django_snapshots.py new file mode 100644 index 00000000000..ae9d8ff7a72 --- /dev/null +++ b/tests/contrib/django/test_django_snapshots.py @@ -0,0 +1,80 @@ +import django +import pytest + +from tests import snapshot + + +@pytest.mark.skipif(not (django.VERSION > (2, 0) and django.VERSION < (2, 2)), reason="") +@snapshot() +def test_urlpatterns_include_21x(client): + """ + When a view is specified using `django.urls.include` + The view is traced + """ + assert client.get("/include/test/").status_code == 200 + + +@pytest.mark.skipif(django.VERSION < (2, 2), reason="") +@snapshot() +def test_urlpatterns_include(client): + """ + When a view is specified using `django.urls.include` + The view is traced + """ + assert client.get("/include/test/").status_code == 200 + + +@pytest.mark.skipif(django.VERSION >= (1, 9), reason="") +@snapshot() +def test_middleware_trace_callable_view_18x(client): + # ensures that the internals are properly traced when using callable views + assert client.get("/feed-view/").status_code == 200 + + +@pytest.mark.skipif(not (django.VERSION >= (1, 9) and django.VERSION < (1, 12)), reason="") +@snapshot() +def test_middleware_trace_callable_view_111x(client): + # ensures that the internals are properly traced when using callable views + assert client.get("/feed-view/").status_code == 200 + + +@pytest.mark.skipif(not (django.VERSION > (1, 12) and django.VERSION < (2, 2)), reason="") +@snapshot() +def test_middleware_trace_callable_view_21x(client): + # ensures that the internals are properly traced when using callable views + assert client.get("/feed-view/").status_code == 200 + + +@pytest.mark.skipif(django.VERSION < (2, 2), reason="") +@snapshot() +def test_middleware_trace_callable_view(client): + # ensures that the internals are properly traced when using callable views + assert client.get("/feed-view/").status_code == 200 + + +@pytest.mark.skipif(django.VERSION >= (1, 9), reason="") +@snapshot() +def test_middleware_trace_partial_based_view_18x(client): + # ensures that the internals are properly traced when using a function views + assert client.get("/partial-view/").status_code == 200 + + +@pytest.mark.skipif(not (django.VERSION >= (1, 9) and django.VERSION < (1, 12)), reason="") +@snapshot() +def test_middleware_trace_partial_based_view_111x(client): + # ensures that the internals are properly traced when using a function views + assert client.get("/partial-view/").status_code == 200 + + +@pytest.mark.skipif(not (django.VERSION > (1, 12) and django.VERSION < (2, 2)), reason="") +@snapshot() +def test_middleware_trace_partial_based_view_21x(client): + # ensures that the internals are properly traced when using a function views + assert client.get("/partial-view/").status_code == 200 + + +@pytest.mark.skipif(django.VERSION < (2, 2), reason="") +@snapshot() +def test_middleware_trace_partial_based_view(client): + # ensures that the internals are properly traced when using a function views + assert client.get("/partial-view/").status_code == 200 diff --git a/tests/contrib/djangorestframework/conftest.py b/tests/contrib/djangorestframework/conftest.py index 8584db9df2a..0aefa196292 100644 --- a/tests/contrib/djangorestframework/conftest.py +++ b/tests/contrib/djangorestframework/conftest.py @@ -1,11 +1,11 @@ -__all__ = ["pytest_configure", "test_spans", "tracer", "patch_django"] +__all__ = ["pytest_configure", "test_spans", "tracer"] import os import django from django.conf import settings from ddtrace.contrib.django import patch -from ..django.conftest import test_spans, tracer, patch_django +from ..django.conftest import test_spans, tracer # We manually designate which settings we will be using in an environment variable # This is similar to what occurs in the `manage.py` diff --git a/tests/snapshots/tests.contrib.django.test_django_snapshots.test_middleware_trace_callable_view.snap b/tests/snapshots/tests.contrib.django.test_django_snapshots.test_middleware_trace_callable_view.snap new file mode 100644 index 00000000000..46b7460031b --- /dev/null +++ b/tests/snapshots/tests.contrib.django.test_django_snapshots.test_middleware_trace_callable_view.snap @@ -0,0 +1,247 @@ +[[{"name" "django.request" + "service" "django" + "resource" "GET ^feed-view/$" + "type" "http" + "error" 0 + "span_id" 0 + "trace_id" 0 + "parent_id" nil + "start" 1603387537981077078 + "duration" 12518733 + "meta" {"runtime-id" "6626318d980f452db5ef923e305e302b" + "http.route" "^feed-view/$" + "http.url" "http://testserver/feed-view/" + "django.user.is_authenticated" "False" + "http.status_code" "200" + "http.method" "GET" + "django.response.class" "django.http.response.HttpResponse" + "django.request.class" "django.core.handlers.wsgi.WSGIRequest" + "django.view" "feed-view"} + "metrics" {"_dd.agent_psr" 1.0 + "_sampling_priority_v1" 1 + "system.pid" 9240}} + {"name" "django.middleware" + "service" "django" + "resource" "django.contrib.sessions.middleware.SessionMiddleware.__call__" + "error" 0 + "span_id" 1 + "trace_id" 0 + "parent_id" 0 + "start" 1603387537981333022 + "duration" 12081847} + {"name" "django.middleware" + "service" "django" + "resource" "django.contrib.sessions.middleware.SessionMiddleware.process_request" + "error" 0 + "span_id" 2 + "trace_id" 0 + "parent_id" 1 + "start" 1603387537981362298 + "duration" 108942} + {"name" "django.middleware" + "service" "django" + "resource" "django.middleware.common.CommonMiddleware.__call__" + "error" 0 + "span_id" 3 + "trace_id" 0 + "parent_id" 1 + "start" 1603387537981922055 + "duration" 11450306} + {"name" "django.middleware" + "service" "django" + "resource" "django.middleware.common.CommonMiddleware.process_request" + "error" 0 + "span_id" 5 + "trace_id" 0 + "parent_id" 3 + "start" 1603387537982024553 + "duration" 288117} + {"name" "django.middleware" + "service" "django" + "resource" "django.middleware.csrf.CsrfViewMiddleware.__call__" + "error" 0 + "span_id" 6 + "trace_id" 0 + "parent_id" 3 + "start" 1603387537982356318 + "duration" 10971589} + {"name" "django.middleware" + "service" "django" + "resource" "django.middleware.csrf.CsrfViewMiddleware.process_request" + "error" 0 + "span_id" 8 + "trace_id" 0 + "parent_id" 6 + "start" 1603387537982387131 + "duration" 19057} + {"name" "django.middleware" + "service" "django" + "resource" "django.contrib.auth.middleware.AuthenticationMiddleware.__call__" + "error" 0 + "span_id" 9 + "trace_id" 0 + "parent_id" 6 + "start" 1603387537982432259 + "duration" 10861447} + {"name" "django.middleware" + "service" "django" + "resource" "django.contrib.auth.middleware.AuthenticationMiddleware.process_request" + "error" 0 + "span_id" 11 + "trace_id" 0 + "parent_id" 9 + "start" 1603387537982455436 + "duration" 20127} + {"name" "django.middleware" + "service" "django" + "resource" "django.contrib.messages.middleware.MessageMiddleware.__call__" + "error" 0 + "span_id" 12 + "trace_id" 0 + "parent_id" 9 + "start" 1603387537982499900 + "duration" 10787406} + {"name" "django.middleware" + "service" "django" + "resource" "django.contrib.messages.middleware.MessageMiddleware.process_request" + "error" 0 + "span_id" 13 + "trace_id" 0 + "parent_id" 12 + "start" 1603387537983430354 + "duration" 240491} + {"name" "django.middleware" + "service" "django" + "resource" "django.middleware.clickjacking.XFrameOptionsMiddleware.__call__" + "error" 0 + "span_id" 14 + "trace_id" 0 + "parent_id" 12 + "start" 1603387537983738614 + "duration" 9509671} + {"name" "django.middleware" + "service" "django" + "resource" "django.middleware.security.SecurityMiddleware.__call__" + "error" 0 + "span_id" 16 + "trace_id" 0 + "parent_id" 14 + "start" 1603387537983816111 + "duration" 9385983} + {"name" "django.middleware" + "service" "django" + "resource" "django.middleware.security.SecurityMiddleware.process_request" + "error" 0 + "span_id" 18 + "trace_id" 0 + "parent_id" 16 + "start" 1603387537983886312 + "duration" 34035} + {"name" "django.middleware" + "service" "django" + "resource" "tests.contrib.django.middleware.ClsMiddleware.__call__" + "error" 0 + "span_id" 19 + "trace_id" 0 + "parent_id" 16 + "start" 1603387537983958473 + "duration" 9170761} + {"name" "django.middleware" + "service" "django" + "resource" "tests.contrib.django.middleware.EverythingMiddleware" + "error" 0 + "span_id" 21 + "trace_id" 0 + "parent_id" 19 + "start" 1603387537984021282 + "duration" 9102195} + {"name" "django.middleware" + "service" "django" + "resource" "tests.contrib.django.middleware.EverythingMiddleware.__call__" + "error" 0 + "span_id" 22 + "trace_id" 0 + "parent_id" 21 + "start" 1603387537984094297 + "duration" 9020516} + {"name" "django.middleware" + "service" "django" + "resource" "django.middleware.csrf.CsrfViewMiddleware.process_view" + "error" 0 + "span_id" 23 + "trace_id" 0 + "parent_id" 22 + "start" 1603387537984847085 + "duration" 143153} + {"name" "django.middleware" + "service" "django" + "resource" "tests.contrib.django.middleware.EverythingMiddleware.process_view" + "error" 0 + "span_id" 24 + "trace_id" 0 + "parent_id" 22 + "start" 1603387537985202934 + "duration" 291333} + {"name" "django.view" + "service" "django" + "resource" "tests.contrib.django.views.FeedView" + "error" 0 + "span_id" 25 + "trace_id" 0 + "parent_id" 22 + "start" 1603387537986619432 + "duration" 6467168} + {"name" "django.middleware" + "service" "django" + "resource" "django.middleware.security.SecurityMiddleware.process_response" + "error" 0 + "span_id" 20 + "trace_id" 0 + "parent_id" 16 + "start" 1603387537993179460 + "duration" 16376} + {"name" "django.middleware" + "service" "django" + "resource" "django.middleware.clickjacking.XFrameOptionsMiddleware.process_response" + "error" 0 + "span_id" 17 + "trace_id" 0 + "parent_id" 14 + "start" 1603387537993225251 + "duration" 16978} + {"name" "django.middleware" + "service" "django" + "resource" "django.contrib.messages.middleware.MessageMiddleware.process_response" + "error" 0 + "span_id" 15 + "trace_id" 0 + "parent_id" 12 + "start" 1603387537993269176 + "duration" 12437} + {"name" "django.middleware" + "service" "django" + "resource" "django.middleware.csrf.CsrfViewMiddleware.process_response" + "error" 0 + "span_id" 10 + "trace_id" 0 + "parent_id" 6 + "start" 1603387537993313655 + "duration" 8593} + {"name" "django.middleware" + "service" "django" + "resource" "django.middleware.common.CommonMiddleware.process_response" + "error" 0 + "span_id" 7 + "trace_id" 0 + "parent_id" 3 + "start" 1603387537993347700 + "duration" 18656} + {"name" "django.middleware" + "service" "django" + "resource" "django.contrib.sessions.middleware.SessionMiddleware.process_response" + "error" 0 + "span_id" 4 + "trace_id" 0 + "parent_id" 1 + "start" 1603387537993392510 + "duration" 16539}]] diff --git a/tests/snapshots/tests.contrib.django.test_django_snapshots.test_middleware_trace_callable_view_111x.snap b/tests/snapshots/tests.contrib.django.test_django_snapshots.test_middleware_trace_callable_view_111x.snap new file mode 100644 index 00000000000..c8374c789cf --- /dev/null +++ b/tests/snapshots/tests.contrib.django.test_django_snapshots.test_middleware_trace_callable_view_111x.snap @@ -0,0 +1,156 @@ +[[{"name" "django.request" + "service" "django" + "resource" "GET tests.contrib.django.views.FeedView" + "type" "http" + "error" 0 + "span_id" 0 + "trace_id" 0 + "parent_id" nil + "start" 1603387527580024000 + "duration" 18146000 + "meta" {"runtime-id" "0ca9b922c7db48a3be1024f5f5df4815" + "django.view" "feed-view" + "http.url" "http://testserver/feed-view/" + "django.request.class" "django.core.handlers.wsgi.WSGIRequest" + "http.method" "GET" + "django.user.is_authenticated" "False" + "http.status_code" "200" + "django.response.class" "django.http.response.HttpResponse"} + "metrics" {"_dd.agent_psr" 1.0 + "_sampling_priority_v1" 1 + "system.pid" 9230}} + {"name" "django.middleware" + "service" "django" + "resource" "django.contrib.sessions.middleware.SessionMiddleware.process_request" + "error" 0 + "span_id" 1 + "trace_id" 0 + "parent_id" 0 + "start" 1603387527580251000 + "duration" 2833000} + {"name" "django.middleware" + "service" "django" + "resource" "django.middleware.common.CommonMiddleware.process_request" + "error" 0 + "span_id" 2 + "trace_id" 0 + "parent_id" 0 + "start" 1603387527583308000 + "duration" 148000} + {"name" "django.middleware" + "service" "django" + "resource" "django.middleware.csrf.CsrfViewMiddleware.process_request" + "error" 0 + "span_id" 3 + "trace_id" 0 + "parent_id" 0 + "start" 1603387527583494000 + "duration" 27000} + {"name" "django.middleware" + "service" "django" + "resource" "django.contrib.auth.middleware.AuthenticationMiddleware.process_request" + "error" 0 + "span_id" 4 + "trace_id" 0 + "parent_id" 0 + "start" 1603387527583604000 + "duration" 26000} + {"name" "django.middleware" + "service" "django" + "resource" "django.contrib.auth.middleware.SessionAuthenticationMiddleware.process_request" + "error" 0 + "span_id" 5 + "trace_id" 0 + "parent_id" 0 + "start" 1603387527583669000 + "duration" 8000} + {"name" "django.middleware" + "service" "django" + "resource" "django.contrib.messages.middleware.MessageMiddleware.process_request" + "error" 0 + "span_id" 6 + "trace_id" 0 + "parent_id" 0 + "start" 1603387527583698000 + "duration" 10548000} + {"name" "django.middleware" + "service" "django" + "resource" "django.middleware.security.SecurityMiddleware.process_request" + "error" 0 + "span_id" 7 + "trace_id" 0 + "parent_id" 0 + "start" 1603387527594498000 + "duration" 25000} + {"name" "django.middleware" + "service" "django" + "resource" "django.middleware.csrf.CsrfViewMiddleware.process_view" + "error" 0 + "span_id" 8 + "trace_id" 0 + "parent_id" 0 + "start" 1603387527594692000 + "duration" 18000} + {"name" "django.view" + "service" "django" + "resource" "tests.contrib.django.views.FeedView" + "error" 0 + "span_id" 9 + "trace_id" 0 + "parent_id" 0 + "start" 1603387527594764000 + "duration" 3008000} + {"name" "django.middleware" + "service" "django" + "resource" "django.middleware.security.SecurityMiddleware.process_response" + "error" 0 + "span_id" 10 + "trace_id" 0 + "parent_id" 0 + "start" 1603387527597826000 + "duration" 13000} + {"name" "django.middleware" + "service" "django" + "resource" "django.middleware.clickjacking.XFrameOptionsMiddleware.process_response" + "error" 0 + "span_id" 11 + "trace_id" 0 + "parent_id" 0 + "start" 1603387527597873000 + "duration" 21000} + {"name" "django.middleware" + "service" "django" + "resource" "django.contrib.messages.middleware.MessageMiddleware.process_response" + "error" 0 + "span_id" 12 + "trace_id" 0 + "parent_id" 0 + "start" 1603387527597912000 + "duration" 13000} + {"name" "django.middleware" + "service" "django" + "resource" "django.middleware.csrf.CsrfViewMiddleware.process_response" + "error" 0 + "span_id" 13 + "trace_id" 0 + "parent_id" 0 + "start" 1603387527597942000 + "duration" 12000} + {"name" "django.middleware" + "service" "django" + "resource" "django.middleware.common.CommonMiddleware.process_response" + "error" 0 + "span_id" 14 + "trace_id" 0 + "parent_id" 0 + "start" 1603387527597971000 + "duration" 19000} + {"name" "django.middleware" + "service" "django" + "resource" "django.contrib.sessions.middleware.SessionMiddleware.process_response" + "error" 0 + "span_id" 15 + "trace_id" 0 + "parent_id" 0 + "start" 1603387527598009000 + "duration" 21000}]] diff --git a/tests/snapshots/tests.contrib.django.test_django_snapshots.test_middleware_trace_callable_view_18x.snap b/tests/snapshots/tests.contrib.django.test_django_snapshots.test_middleware_trace_callable_view_18x.snap new file mode 100644 index 00000000000..3481ed5b6c4 --- /dev/null +++ b/tests/snapshots/tests.contrib.django.test_django_snapshots.test_middleware_trace_callable_view_18x.snap @@ -0,0 +1,147 @@ +[[{"name" "django.request" + "service" "django" + "resource" "GET tests.contrib.django.views.FeedView" + "type" "http" + "error" 0 + "span_id" 0 + "trace_id" 0 + "parent_id" nil + "start" 1603387459862448000 + "duration" 12163000 + "meta" {"runtime-id" "5c6cfa4df5cb486fb21f1db1c00b06fc" + "django.view" "feed-view" + "http.url" "http://testserver/feed-view/" + "django.request.class" "django.core.handlers.wsgi.WSGIRequest" + "http.method" "GET" + "django.user.is_authenticated" "False" + "http.status_code" "200" + "django.response.class" "django.http.response.HttpResponse"} + "metrics" {"_dd.agent_psr" 1.0 + "_sampling_priority_v1" 1 + "system.pid" 9224}} + {"name" "django.middleware" + "service" "django" + "resource" "django.contrib.sessions.middleware.SessionMiddleware.process_request" + "error" 0 + "span_id" 1 + "trace_id" 0 + "parent_id" 0 + "start" 1603387459862685000 + "duration" 2233000} + {"name" "django.middleware" + "service" "django" + "resource" "django.middleware.common.CommonMiddleware.process_request" + "error" 0 + "span_id" 2 + "trace_id" 0 + "parent_id" 0 + "start" 1603387459865066000 + "duration" 94000} + {"name" "django.middleware" + "service" "django" + "resource" "django.contrib.auth.middleware.AuthenticationMiddleware.process_request" + "error" 0 + "span_id" 3 + "trace_id" 0 + "parent_id" 0 + "start" 1603387459865210000 + "duration" 30000} + {"name" "django.middleware" + "service" "django" + "resource" "django.contrib.auth.middleware.SessionAuthenticationMiddleware.process_request" + "error" 0 + "span_id" 4 + "trace_id" 0 + "parent_id" 0 + "start" 1603387459865274000 + "duration" 10000} + {"name" "django.middleware" + "service" "django" + "resource" "django.contrib.messages.middleware.MessageMiddleware.process_request" + "error" 0 + "span_id" 5 + "trace_id" 0 + "parent_id" 0 + "start" 1603387459865313000 + "duration" 6016000} + {"name" "django.middleware" + "service" "django" + "resource" "django.middleware.security.SecurityMiddleware.process_request" + "error" 0 + "span_id" 6 + "trace_id" 0 + "parent_id" 0 + "start" 1603387459871432000 + "duration" 29000} + {"name" "django.middleware" + "service" "django" + "resource" "django.middleware.csrf.CsrfViewMiddleware.process_view" + "error" 0 + "span_id" 7 + "trace_id" 0 + "parent_id" 0 + "start" 1603387459871710000 + "duration" 311000} + {"name" "django.view" + "service" "django" + "resource" "tests.contrib.django.views.FeedView" + "error" 0 + "span_id" 8 + "trace_id" 0 + "parent_id" 0 + "start" 1603387459872081000 + "duration" 2001000} + {"name" "django.middleware" + "service" "django" + "resource" "django.middleware.security.SecurityMiddleware.process_response" + "error" 0 + "span_id" 9 + "trace_id" 0 + "parent_id" 0 + "start" 1603387459874144000 + "duration" 27000} + {"name" "django.middleware" + "service" "django" + "resource" "django.middleware.clickjacking.XFrameOptionsMiddleware.process_response" + "error" 0 + "span_id" 10 + "trace_id" 0 + "parent_id" 0 + "start" 1603387459874241000 + "duration" 29000} + {"name" "django.middleware" + "service" "django" + "resource" "django.contrib.messages.middleware.MessageMiddleware.process_response" + "error" 0 + "span_id" 11 + "trace_id" 0 + "parent_id" 0 + "start" 1603387459874291000 + "duration" 10000} + {"name" "django.middleware" + "service" "django" + "resource" "django.middleware.csrf.CsrfViewMiddleware.process_response" + "error" 0 + "span_id" 12 + "trace_id" 0 + "parent_id" 0 + "start" 1603387459874321000 + "duration" 9000} + {"name" "django.middleware" + "service" "django" + "resource" "django.middleware.common.CommonMiddleware.process_response" + "error" 0 + "span_id" 13 + "trace_id" 0 + "parent_id" 0 + "start" 1603387459874347000 + "duration" 9000} + {"name" "django.middleware" + "service" "django" + "resource" "django.contrib.sessions.middleware.SessionMiddleware.process_response" + "error" 0 + "span_id" 14 + "trace_id" 0 + "parent_id" 0 + "start" 1603387459874372000 + "duration" 16000}]] diff --git a/tests/snapshots/tests.contrib.django.test_django_snapshots.test_middleware_trace_callable_view_21x.snap b/tests/snapshots/tests.contrib.django.test_django_snapshots.test_middleware_trace_callable_view_21x.snap new file mode 100644 index 00000000000..e90c277a0be --- /dev/null +++ b/tests/snapshots/tests.contrib.django.test_django_snapshots.test_middleware_trace_callable_view_21x.snap @@ -0,0 +1,246 @@ +[[{"name" "django.request" + "service" "django" + "resource" "GET tests.contrib.django.views.FeedView" + "type" "http" + "error" 0 + "span_id" 0 + "trace_id" 0 + "parent_id" nil + "start" 1603387533941228034 + "duration" 4060239 + "meta" {"runtime-id" "0758e559eba14ff2b34eb29faa85c427" + "django.view" "feed-view" + "http.url" "http://testserver/feed-view/" + "django.request.class" "django.core.handlers.wsgi.WSGIRequest" + "http.method" "GET" + "django.user.is_authenticated" "False" + "http.status_code" "200" + "django.response.class" "django.http.response.HttpResponse"} + "metrics" {"_dd.agent_psr" 1.0 + "_sampling_priority_v1" 1 + "system.pid" 9236}} + {"name" "django.middleware" + "service" "django" + "resource" "django.contrib.sessions.middleware.SessionMiddleware.__call__" + "error" 0 + "span_id" 1 + "trace_id" 0 + "parent_id" 0 + "start" 1603387533941395009 + "duration" 3751739} + {"name" "django.middleware" + "service" "django" + "resource" "django.contrib.sessions.middleware.SessionMiddleware.process_request" + "error" 0 + "span_id" 2 + "trace_id" 0 + "parent_id" 1 + "start" 1603387533941416431 + "duration" 62180} + {"name" "django.middleware" + "service" "django" + "resource" "django.middleware.common.CommonMiddleware.__call__" + "error" 0 + "span_id" 3 + "trace_id" 0 + "parent_id" 1 + "start" 1603387533941530490 + "duration" 3578998} + {"name" "django.middleware" + "service" "django" + "resource" "django.middleware.common.CommonMiddleware.process_request" + "error" 0 + "span_id" 5 + "trace_id" 0 + "parent_id" 3 + "start" 1603387533941547273 + "duration" 43038} + {"name" "django.middleware" + "service" "django" + "resource" "django.middleware.csrf.CsrfViewMiddleware.__call__" + "error" 0 + "span_id" 6 + "trace_id" 0 + "parent_id" 3 + "start" 1603387533941609192 + "duration" 3457030} + {"name" "django.middleware" + "service" "django" + "resource" "django.middleware.csrf.CsrfViewMiddleware.process_request" + "error" 0 + "span_id" 8 + "trace_id" 0 + "parent_id" 6 + "start" 1603387533941627695 + "duration" 8559} + {"name" "django.middleware" + "service" "django" + "resource" "django.contrib.auth.middleware.AuthenticationMiddleware.__call__" + "error" 0 + "span_id" 9 + "trace_id" 0 + "parent_id" 6 + "start" 1603387533941653645 + "duration" 3352225} + {"name" "django.middleware" + "service" "django" + "resource" "django.contrib.auth.middleware.AuthenticationMiddleware.process_request" + "error" 0 + "span_id" 11 + "trace_id" 0 + "parent_id" 9 + "start" 1603387533941668099 + "duration" 13394} + {"name" "django.middleware" + "service" "django" + "resource" "django.contrib.messages.middleware.MessageMiddleware.__call__" + "error" 0 + "span_id" 12 + "trace_id" 0 + "parent_id" 9 + "start" 1603387533941696387 + "duration" 3304148} + {"name" "django.middleware" + "service" "django" + "resource" "django.contrib.messages.middleware.MessageMiddleware.process_request" + "error" 0 + "span_id" 13 + "trace_id" 0 + "parent_id" 12 + "start" 1603387533941714087 + "duration" 42614} + {"name" "django.middleware" + "service" "django" + "resource" "django.middleware.clickjacking.XFrameOptionsMiddleware.__call__" + "error" 0 + "span_id" 14 + "trace_id" 0 + "parent_id" 12 + "start" 1603387533941775008 + "duration" 3191748} + {"name" "django.middleware" + "service" "django" + "resource" "django.middleware.security.SecurityMiddleware.__call__" + "error" 0 + "span_id" 16 + "trace_id" 0 + "parent_id" 14 + "start" 1603387533941791080 + "duration" 3133482} + {"name" "django.middleware" + "service" "django" + "resource" "django.middleware.security.SecurityMiddleware.process_request" + "error" 0 + "span_id" 18 + "trace_id" 0 + "parent_id" 16 + "start" 1603387533941804822 + "duration" 5786} + {"name" "django.middleware" + "service" "django" + "resource" "tests.contrib.django.middleware.ClsMiddleware.__call__" + "error" 0 + "span_id" 19 + "trace_id" 0 + "parent_id" 16 + "start" 1603387533941825663 + "duration" 3040949} + {"name" "django.middleware" + "service" "django" + "resource" "tests.contrib.django.middleware.EverythingMiddleware" + "error" 0 + "span_id" 21 + "trace_id" 0 + "parent_id" 19 + "start" 1603387533941840183 + "duration" 3022156} + {"name" "django.middleware" + "service" "django" + "resource" "tests.contrib.django.middleware.EverythingMiddleware.__call__" + "error" 0 + "span_id" 22 + "trace_id" 0 + "parent_id" 21 + "start" 1603387533941856995 + "duration" 2997763} + {"name" "django.middleware" + "service" "django" + "resource" "django.middleware.csrf.CsrfViewMiddleware.process_view" + "error" 0 + "span_id" 23 + "trace_id" 0 + "parent_id" 22 + "start" 1603387533941912426 + "duration" 11274} + {"name" "django.middleware" + "service" "django" + "resource" "tests.contrib.django.middleware.EverythingMiddleware.process_view" + "error" 0 + "span_id" 24 + "trace_id" 0 + "parent_id" 22 + "start" 1603387533941936409 + "duration" 5003} + {"name" "django.view" + "service" "django" + "resource" "tests.contrib.django.views.FeedView" + "error" 0 + "span_id" 25 + "trace_id" 0 + "parent_id" 22 + "start" 1603387533941971605 + "duration" 2860663} + {"name" "django.middleware" + "service" "django" + "resource" "django.middleware.security.SecurityMiddleware.process_response" + "error" 0 + "span_id" 20 + "trace_id" 0 + "parent_id" 16 + "start" 1603387533944904960 + "duration" 14847} + {"name" "django.middleware" + "service" "django" + "resource" "django.middleware.clickjacking.XFrameOptionsMiddleware.process_response" + "error" 0 + "span_id" 17 + "trace_id" 0 + "parent_id" 14 + "start" 1603387533944943358 + "duration" 18569} + {"name" "django.middleware" + "service" "django" + "resource" "django.contrib.messages.middleware.MessageMiddleware.process_response" + "error" 0 + "span_id" 15 + "trace_id" 0 + "parent_id" 12 + "start" 1603387533944984418 + "duration" 11499} + {"name" "django.middleware" + "service" "django" + "resource" "django.middleware.csrf.CsrfViewMiddleware.process_response" + "error" 0 + "span_id" 10 + "trace_id" 0 + "parent_id" 6 + "start" 1603387533945052263 + "duration" 8600} + {"name" "django.middleware" + "service" "django" + "resource" "django.middleware.common.CommonMiddleware.process_response" + "error" 0 + "span_id" 7 + "trace_id" 0 + "parent_id" 3 + "start" 1603387533945082784 + "duration" 21627} + {"name" "django.middleware" + "service" "django" + "resource" "django.contrib.sessions.middleware.SessionMiddleware.process_response" + "error" 0 + "span_id" 4 + "trace_id" 0 + "parent_id" 1 + "start" 1603387533945126166 + "duration" 15619}]] diff --git a/tests/snapshots/tests.contrib.django.test_django_snapshots.test_middleware_trace_partial_based_view.snap b/tests/snapshots/tests.contrib.django.test_django_snapshots.test_middleware_trace_partial_based_view.snap new file mode 100644 index 00000000000..dd1cf6d5f6a --- /dev/null +++ b/tests/snapshots/tests.contrib.django.test_django_snapshots.test_middleware_trace_partial_based_view.snap @@ -0,0 +1,247 @@ +[[{"name" "django.request" + "service" "django" + "resource" "GET ^partial-view/$" + "type" "http" + "error" 0 + "span_id" 0 + "trace_id" 0 + "parent_id" nil + "start" 1603387538031067468 + "duration" 4931819 + "meta" {"runtime-id" "6626318d980f452db5ef923e305e302b" + "http.route" "^partial-view/$" + "http.url" "http://testserver/partial-view/" + "django.user.is_authenticated" "False" + "http.status_code" "200" + "http.method" "GET" + "django.response.class" "django.http.response.HttpResponse" + "django.request.class" "django.core.handlers.wsgi.WSGIRequest" + "django.view" "partial-view"} + "metrics" {"_dd.agent_psr" 1.0 + "_sampling_priority_v1" 1 + "system.pid" 9240}} + {"name" "django.middleware" + "service" "django" + "resource" "django.contrib.sessions.middleware.SessionMiddleware.__call__" + "error" 0 + "span_id" 1 + "trace_id" 0 + "parent_id" 0 + "start" 1603387538031335119 + "duration" 4296672} + {"name" "django.middleware" + "service" "django" + "resource" "django.contrib.sessions.middleware.SessionMiddleware.process_request" + "error" 0 + "span_id" 2 + "trace_id" 0 + "parent_id" 1 + "start" 1603387538031363392 + "duration" 88941} + {"name" "django.middleware" + "service" "django" + "resource" "django.middleware.common.CommonMiddleware.__call__" + "error" 0 + "span_id" 3 + "trace_id" 0 + "parent_id" 1 + "start" 1603387538031489065 + "duration" 4051381} + {"name" "django.middleware" + "service" "django" + "resource" "django.middleware.common.CommonMiddleware.process_request" + "error" 0 + "span_id" 5 + "trace_id" 0 + "parent_id" 3 + "start" 1603387538031510605 + "duration" 53564} + {"name" "django.middleware" + "service" "django" + "resource" "django.middleware.csrf.CsrfViewMiddleware.__call__" + "error" 0 + "span_id" 6 + "trace_id" 0 + "parent_id" 3 + "start" 1603387538031586241 + "duration" 3897793} + {"name" "django.middleware" + "service" "django" + "resource" "django.middleware.csrf.CsrfViewMiddleware.process_request" + "error" 0 + "span_id" 8 + "trace_id" 0 + "parent_id" 6 + "start" 1603387538031609773 + "duration" 10247} + {"name" "django.middleware" + "service" "django" + "resource" "django.contrib.auth.middleware.AuthenticationMiddleware.__call__" + "error" 0 + "span_id" 9 + "trace_id" 0 + "parent_id" 6 + "start" 1603387538031639798 + "duration" 3726997} + {"name" "django.middleware" + "service" "django" + "resource" "django.contrib.auth.middleware.AuthenticationMiddleware.process_request" + "error" 0 + "span_id" 11 + "trace_id" 0 + "parent_id" 9 + "start" 1603387538031674655 + "duration" 14623} + {"name" "django.middleware" + "service" "django" + "resource" "django.contrib.messages.middleware.MessageMiddleware.__call__" + "error" 0 + "span_id" 12 + "trace_id" 0 + "parent_id" 9 + "start" 1603387538031711103 + "duration" 3644672} + {"name" "django.middleware" + "service" "django" + "resource" "django.contrib.messages.middleware.MessageMiddleware.process_request" + "error" 0 + "span_id" 13 + "trace_id" 0 + "parent_id" 12 + "start" 1603387538031729969 + "duration" 51036} + {"name" "django.middleware" + "service" "django" + "resource" "django.middleware.clickjacking.XFrameOptionsMiddleware.__call__" + "error" 0 + "span_id" 14 + "trace_id" 0 + "parent_id" 12 + "start" 1603387538031805869 + "duration" 3346457} + {"name" "django.middleware" + "service" "django" + "resource" "django.middleware.security.SecurityMiddleware.__call__" + "error" 0 + "span_id" 16 + "trace_id" 0 + "parent_id" 14 + "start" 1603387538031826622 + "duration" 3066349} + {"name" "django.middleware" + "service" "django" + "resource" "django.middleware.security.SecurityMiddleware.process_request" + "error" 0 + "span_id" 18 + "trace_id" 0 + "parent_id" 16 + "start" 1603387538031844613 + "duration" 7478} + {"name" "django.middleware" + "service" "django" + "resource" "tests.contrib.django.middleware.ClsMiddleware.__call__" + "error" 0 + "span_id" 19 + "trace_id" 0 + "parent_id" 16 + "start" 1603387538031869207 + "duration" 2779554} + {"name" "django.middleware" + "service" "django" + "resource" "tests.contrib.django.middleware.EverythingMiddleware" + "error" 0 + "span_id" 21 + "trace_id" 0 + "parent_id" 19 + "start" 1603387538031887611 + "duration" 2751466} + {"name" "django.middleware" + "service" "django" + "resource" "tests.contrib.django.middleware.EverythingMiddleware.__call__" + "error" 0 + "span_id" 22 + "trace_id" 0 + "parent_id" 21 + "start" 1603387538031908230 + "duration" 2713789} + {"name" "django.middleware" + "service" "django" + "resource" "django.middleware.csrf.CsrfViewMiddleware.process_view" + "error" 0 + "span_id" 23 + "trace_id" 0 + "parent_id" 22 + "start" 1603387538031985665 + "duration" 13119} + {"name" "django.middleware" + "service" "django" + "resource" "tests.contrib.django.middleware.EverythingMiddleware.process_view" + "error" 0 + "span_id" 24 + "trace_id" 0 + "parent_id" 22 + "start" 1603387538032015035 + "duration" 6002} + {"name" "django.view" + "service" "django" + "resource" "partial" + "error" 0 + "span_id" 25 + "trace_id" 0 + "parent_id" 22 + "start" 1603387538032058408 + "duration" 2510141} + {"name" "django.middleware" + "service" "django" + "resource" "django.middleware.security.SecurityMiddleware.process_response" + "error" 0 + "span_id" 20 + "trace_id" 0 + "parent_id" 16 + "start" 1603387538034845024 + "duration" 34599} + {"name" "django.middleware" + "service" "django" + "resource" "django.middleware.clickjacking.XFrameOptionsMiddleware.process_response" + "error" 0 + "span_id" 17 + "trace_id" 0 + "parent_id" 14 + "start" 1603387538035008986 + "duration" 126320} + {"name" "django.middleware" + "service" "django" + "resource" "django.contrib.messages.middleware.MessageMiddleware.process_response" + "error" 0 + "span_id" 15 + "trace_id" 0 + "parent_id" 12 + "start" 1603387538035223267 + "duration" 114140} + {"name" "django.middleware" + "service" "django" + "resource" "django.middleware.csrf.CsrfViewMiddleware.process_response" + "error" 0 + "span_id" 10 + "trace_id" 0 + "parent_id" 6 + "start" 1603387538035447990 + "duration" 27145} + {"name" "django.middleware" + "service" "django" + "resource" "django.middleware.common.CommonMiddleware.process_response" + "error" 0 + "span_id" 7 + "trace_id" 0 + "parent_id" 3 + "start" 1603387538035508307 + "duration" 23622} + {"name" "django.middleware" + "service" "django" + "resource" "django.contrib.sessions.middleware.SessionMiddleware.process_response" + "error" 0 + "span_id" 4 + "trace_id" 0 + "parent_id" 1 + "start" 1603387538035569395 + "duration" 25053}]] diff --git a/tests/snapshots/tests.contrib.django.test_django_snapshots.test_middleware_trace_partial_based_view_111x.snap b/tests/snapshots/tests.contrib.django.test_django_snapshots.test_middleware_trace_partial_based_view_111x.snap new file mode 100644 index 00000000000..be085282f36 --- /dev/null +++ b/tests/snapshots/tests.contrib.django.test_django_snapshots.test_middleware_trace_partial_based_view_111x.snap @@ -0,0 +1,156 @@ +[[{"name" "django.request" + "service" "django" + "resource" "GET partial" + "type" "http" + "error" 0 + "span_id" 0 + "trace_id" 0 + "parent_id" nil + "start" 1603387527647486000 + "duration" 1407000 + "meta" {"runtime-id" "0ca9b922c7db48a3be1024f5f5df4815" + "django.view" "partial-view" + "http.url" "http://testserver/partial-view/" + "django.request.class" "django.core.handlers.wsgi.WSGIRequest" + "http.method" "GET" + "django.user.is_authenticated" "False" + "http.status_code" "200" + "django.response.class" "django.http.response.HttpResponse"} + "metrics" {"_dd.agent_psr" 1.0 + "_sampling_priority_v1" 1 + "system.pid" 9230}} + {"name" "django.middleware" + "service" "django" + "resource" "django.contrib.sessions.middleware.SessionMiddleware.process_request" + "error" 0 + "span_id" 1 + "trace_id" 0 + "parent_id" 0 + "start" 1603387527647636000 + "duration" 64000} + {"name" "django.middleware" + "service" "django" + "resource" "django.middleware.common.CommonMiddleware.process_request" + "error" 0 + "span_id" 2 + "trace_id" 0 + "parent_id" 0 + "start" 1603387527647735000 + "duration" 53000} + {"name" "django.middleware" + "service" "django" + "resource" "django.middleware.csrf.CsrfViewMiddleware.process_request" + "error" 0 + "span_id" 3 + "trace_id" 0 + "parent_id" 0 + "start" 1603387527647814000 + "duration" 11000} + {"name" "django.middleware" + "service" "django" + "resource" "django.contrib.auth.middleware.AuthenticationMiddleware.process_request" + "error" 0 + "span_id" 4 + "trace_id" 0 + "parent_id" 0 + "start" 1603387527647846000 + "duration" 16000} + {"name" "django.middleware" + "service" "django" + "resource" "django.contrib.auth.middleware.SessionAuthenticationMiddleware.process_request" + "error" 0 + "span_id" 5 + "trace_id" 0 + "parent_id" 0 + "start" 1603387527647882000 + "duration" 7000} + {"name" "django.middleware" + "service" "django" + "resource" "django.contrib.messages.middleware.MessageMiddleware.process_request" + "error" 0 + "span_id" 6 + "trace_id" 0 + "parent_id" 0 + "start" 1603387527647909000 + "duration" 51000} + {"name" "django.middleware" + "service" "django" + "resource" "django.middleware.security.SecurityMiddleware.process_request" + "error" 0 + "span_id" 7 + "trace_id" 0 + "parent_id" 0 + "start" 1603387527647983000 + "duration" 9000} + {"name" "django.middleware" + "service" "django" + "resource" "django.middleware.csrf.CsrfViewMiddleware.process_view" + "error" 0 + "span_id" 8 + "trace_id" 0 + "parent_id" 0 + "start" 1603387527648070000 + "duration" 17000} + {"name" "django.view" + "service" "django" + "resource" "partial" + "error" 0 + "span_id" 9 + "trace_id" 0 + "parent_id" 0 + "start" 1603387527648136000 + "duration" 82000} + {"name" "django.middleware" + "service" "django" + "resource" "django.middleware.security.SecurityMiddleware.process_response" + "error" 0 + "span_id" 10 + "trace_id" 0 + "parent_id" 0 + "start" 1603387527648259000 + "duration" 11000} + {"name" "django.middleware" + "service" "django" + "resource" "django.middleware.clickjacking.XFrameOptionsMiddleware.process_response" + "error" 0 + "span_id" 11 + "trace_id" 0 + "parent_id" 0 + "start" 1603387527648297000 + "duration" 23000} + {"name" "django.middleware" + "service" "django" + "resource" "django.contrib.messages.middleware.MessageMiddleware.process_response" + "error" 0 + "span_id" 12 + "trace_id" 0 + "parent_id" 0 + "start" 1603387527648346000 + "duration" 14000} + {"name" "django.middleware" + "service" "django" + "resource" "django.middleware.csrf.CsrfViewMiddleware.process_response" + "error" 0 + "span_id" 13 + "trace_id" 0 + "parent_id" 0 + "start" 1603387527648385000 + "duration" 16000} + {"name" "django.middleware" + "service" "django" + "resource" "django.middleware.common.CommonMiddleware.process_response" + "error" 0 + "span_id" 14 + "trace_id" 0 + "parent_id" 0 + "start" 1603387527648547000 + "duration" 49000} + {"name" "django.middleware" + "service" "django" + "resource" "django.contrib.sessions.middleware.SessionMiddleware.process_response" + "error" 0 + "span_id" 15 + "trace_id" 0 + "parent_id" 0 + "start" 1603387527648640000 + "duration" 23000}]] diff --git a/tests/snapshots/tests.contrib.django.test_django_snapshots.test_middleware_trace_partial_based_view_18x.snap b/tests/snapshots/tests.contrib.django.test_django_snapshots.test_middleware_trace_partial_based_view_18x.snap new file mode 100644 index 00000000000..36db40f6bb8 --- /dev/null +++ b/tests/snapshots/tests.contrib.django.test_django_snapshots.test_middleware_trace_partial_based_view_18x.snap @@ -0,0 +1,147 @@ +[[{"name" "django.request" + "service" "django" + "resource" "GET partial" + "type" "http" + "error" 0 + "span_id" 0 + "trace_id" 0 + "parent_id" nil + "start" 1603387459923603000 + "duration" 2350000 + "meta" {"runtime-id" "5c6cfa4df5cb486fb21f1db1c00b06fc" + "django.view" "partial-view" + "http.url" "http://testserver/partial-view/" + "django.request.class" "django.core.handlers.wsgi.WSGIRequest" + "http.method" "GET" + "django.user.is_authenticated" "False" + "http.status_code" "200" + "django.response.class" "django.http.response.HttpResponse"} + "metrics" {"_dd.agent_psr" 1.0 + "_sampling_priority_v1" 1 + "system.pid" 9224}} + {"name" "django.middleware" + "service" "django" + "resource" "django.contrib.sessions.middleware.SessionMiddleware.process_request" + "error" 0 + "span_id" 1 + "trace_id" 0 + "parent_id" 0 + "start" 1603387459924066000 + "duration" 143000} + {"name" "django.middleware" + "service" "django" + "resource" "django.middleware.common.CommonMiddleware.process_request" + "error" 0 + "span_id" 2 + "trace_id" 0 + "parent_id" 0 + "start" 1603387459924268000 + "duration" 72000} + {"name" "django.middleware" + "service" "django" + "resource" "django.contrib.auth.middleware.AuthenticationMiddleware.process_request" + "error" 0 + "span_id" 3 + "trace_id" 0 + "parent_id" 0 + "start" 1603387459924401000 + "duration" 27000} + {"name" "django.middleware" + "service" "django" + "resource" "django.contrib.auth.middleware.SessionAuthenticationMiddleware.process_request" + "error" 0 + "span_id" 4 + "trace_id" 0 + "parent_id" 0 + "start" 1603387459924462000 + "duration" 11000} + {"name" "django.middleware" + "service" "django" + "resource" "django.contrib.messages.middleware.MessageMiddleware.process_request" + "error" 0 + "span_id" 5 + "trace_id" 0 + "parent_id" 0 + "start" 1603387459924514000 + "duration" 103000} + {"name" "django.middleware" + "service" "django" + "resource" "django.middleware.security.SecurityMiddleware.process_request" + "error" 0 + "span_id" 6 + "trace_id" 0 + "parent_id" 0 + "start" 1603387459924722000 + "duration" 19000} + {"name" "django.middleware" + "service" "django" + "resource" "django.middleware.csrf.CsrfViewMiddleware.process_view" + "error" 0 + "span_id" 7 + "trace_id" 0 + "parent_id" 0 + "start" 1603387459925138000 + "duration" 258000} + {"name" "django.view" + "service" "django" + "resource" "partial" + "error" 0 + "span_id" 8 + "trace_id" 0 + "parent_id" 0 + "start" 1603387459925455000 + "duration" 55000} + {"name" "django.middleware" + "service" "django" + "resource" "django.middleware.security.SecurityMiddleware.process_response" + "error" 0 + "span_id" 9 + "trace_id" 0 + "parent_id" 0 + "start" 1603387459925540000 + "duration" 10000} + {"name" "django.middleware" + "service" "django" + "resource" "django.middleware.clickjacking.XFrameOptionsMiddleware.process_response" + "error" 0 + "span_id" 10 + "trace_id" 0 + "parent_id" 0 + "start" 1603387459925574000 + "duration" 22000} + {"name" "django.middleware" + "service" "django" + "resource" "django.contrib.messages.middleware.MessageMiddleware.process_response" + "error" 0 + "span_id" 11 + "trace_id" 0 + "parent_id" 0 + "start" 1603387459925621000 + "duration" 11000} + {"name" "django.middleware" + "service" "django" + "resource" "django.middleware.csrf.CsrfViewMiddleware.process_response" + "error" 0 + "span_id" 12 + "trace_id" 0 + "parent_id" 0 + "start" 1603387459925655000 + "duration" 11000} + {"name" "django.middleware" + "service" "django" + "resource" "django.middleware.common.CommonMiddleware.process_response" + "error" 0 + "span_id" 13 + "trace_id" 0 + "parent_id" 0 + "start" 1603387459925688000 + "duration" 11000} + {"name" "django.middleware" + "service" "django" + "resource" "django.contrib.sessions.middleware.SessionMiddleware.process_response" + "error" 0 + "span_id" 14 + "trace_id" 0 + "parent_id" 0 + "start" 1603387459925721000 + "duration" 63000}]] diff --git a/tests/snapshots/tests.contrib.django.test_django_snapshots.test_middleware_trace_partial_based_view_21x.snap b/tests/snapshots/tests.contrib.django.test_django_snapshots.test_middleware_trace_partial_based_view_21x.snap new file mode 100644 index 00000000000..08f5d65ffd7 --- /dev/null +++ b/tests/snapshots/tests.contrib.django.test_django_snapshots.test_middleware_trace_partial_based_view_21x.snap @@ -0,0 +1,246 @@ +[[{"name" "django.request" + "service" "django" + "resource" "GET partial" + "type" "http" + "error" 0 + "span_id" 0 + "trace_id" 0 + "parent_id" nil + "start" 1603387534002600446 + "duration" 2590873 + "meta" {"runtime-id" "0758e559eba14ff2b34eb29faa85c427" + "django.view" "partial-view" + "http.url" "http://testserver/partial-view/" + "django.request.class" "django.core.handlers.wsgi.WSGIRequest" + "http.method" "GET" + "django.user.is_authenticated" "False" + "http.status_code" "200" + "django.response.class" "django.http.response.HttpResponse"} + "metrics" {"_dd.agent_psr" 1.0 + "_sampling_priority_v1" 1 + "system.pid" 9236}} + {"name" "django.middleware" + "service" "django" + "resource" "django.contrib.sessions.middleware.SessionMiddleware.__call__" + "error" 0 + "span_id" 1 + "trace_id" 0 + "parent_id" 0 + "start" 1603387534002874888 + "duration" 2128974} + {"name" "django.middleware" + "service" "django" + "resource" "django.contrib.sessions.middleware.SessionMiddleware.process_request" + "error" 0 + "span_id" 2 + "trace_id" 0 + "parent_id" 1 + "start" 1603387534002929453 + "duration" 135545} + {"name" "django.middleware" + "service" "django" + "resource" "django.middleware.common.CommonMiddleware.__call__" + "error" 0 + "span_id" 3 + "trace_id" 0 + "parent_id" 1 + "start" 1603387534003180908 + "duration" 1777257} + {"name" "django.middleware" + "service" "django" + "resource" "django.middleware.common.CommonMiddleware.process_request" + "error" 0 + "span_id" 5 + "trace_id" 0 + "parent_id" 3 + "start" 1603387534003224264 + "duration" 89090} + {"name" "django.middleware" + "service" "django" + "resource" "django.middleware.csrf.CsrfViewMiddleware.__call__" + "error" 0 + "span_id" 6 + "trace_id" 0 + "parent_id" 3 + "start" 1603387534003383005 + "duration" 1529446} + {"name" "django.middleware" + "service" "django" + "resource" "django.middleware.csrf.CsrfViewMiddleware.process_request" + "error" 0 + "span_id" 8 + "trace_id" 0 + "parent_id" 6 + "start" 1603387534003454852 + "duration" 39859} + {"name" "django.middleware" + "service" "django" + "resource" "django.contrib.auth.middleware.AuthenticationMiddleware.__call__" + "error" 0 + "span_id" 9 + "trace_id" 0 + "parent_id" 6 + "start" 1603387534003566486 + "duration" 1312753} + {"name" "django.middleware" + "service" "django" + "resource" "django.contrib.auth.middleware.AuthenticationMiddleware.process_request" + "error" 0 + "span_id" 11 + "trace_id" 0 + "parent_id" 9 + "start" 1603387534003616824 + "duration" 41931} + {"name" "django.middleware" + "service" "django" + "resource" "django.contrib.messages.middleware.MessageMiddleware.__call__" + "error" 0 + "span_id" 12 + "trace_id" 0 + "parent_id" 9 + "start" 1603387534003707603 + "duration" 1166059} + {"name" "django.middleware" + "service" "django" + "resource" "django.contrib.messages.middleware.MessageMiddleware.process_request" + "error" 0 + "span_id" 13 + "trace_id" 0 + "parent_id" 12 + "start" 1603387534003743991 + "duration" 122124} + {"name" "django.middleware" + "service" "django" + "resource" "django.middleware.clickjacking.XFrameOptionsMiddleware.__call__" + "error" 0 + "span_id" 14 + "trace_id" 0 + "parent_id" 12 + "start" 1603387534003907165 + "duration" 928109} + {"name" "django.middleware" + "service" "django" + "resource" "django.middleware.security.SecurityMiddleware.__call__" + "error" 0 + "span_id" 16 + "trace_id" 0 + "parent_id" 14 + "start" 1603387534003947231 + "duration" 846403} + {"name" "django.middleware" + "service" "django" + "resource" "django.middleware.security.SecurityMiddleware.process_request" + "error" 0 + "span_id" 18 + "trace_id" 0 + "parent_id" 16 + "start" 1603387534003975117 + "duration" 15944} + {"name" "django.middleware" + "service" "django" + "resource" "tests.contrib.django.middleware.ClsMiddleware.__call__" + "error" 0 + "span_id" 19 + "trace_id" 0 + "parent_id" 16 + "start" 1603387534004026729 + "duration" 729924} + {"name" "django.middleware" + "service" "django" + "resource" "tests.contrib.django.middleware.EverythingMiddleware" + "error" 0 + "span_id" 21 + "trace_id" 0 + "parent_id" 19 + "start" 1603387534004314394 + "duration" 436843} + {"name" "django.middleware" + "service" "django" + "resource" "tests.contrib.django.middleware.EverythingMiddleware.__call__" + "error" 0 + "span_id" 22 + "trace_id" 0 + "parent_id" 21 + "start" 1603387534004417487 + "duration" 328008} + {"name" "django.middleware" + "service" "django" + "resource" "django.middleware.csrf.CsrfViewMiddleware.process_view" + "error" 0 + "span_id" 23 + "trace_id" 0 + "parent_id" 22 + "start" 1603387534004548257 + "duration" 17657} + {"name" "django.middleware" + "service" "django" + "resource" "tests.contrib.django.middleware.EverythingMiddleware.process_view" + "error" 0 + "span_id" 24 + "trace_id" 0 + "parent_id" 22 + "start" 1603387534004599101 + "duration" 11020} + {"name" "django.view" + "service" "django" + "resource" "partial" + "error" 0 + "span_id" 25 + "trace_id" 0 + "parent_id" 22 + "start" 1603387534004682566 + "duration" 54732} + {"name" "django.middleware" + "service" "django" + "resource" "django.middleware.security.SecurityMiddleware.process_response" + "error" 0 + "span_id" 20 + "trace_id" 0 + "parent_id" 16 + "start" 1603387534004778651 + "duration" 9236} + {"name" "django.middleware" + "service" "django" + "resource" "django.middleware.clickjacking.XFrameOptionsMiddleware.process_response" + "error" 0 + "span_id" 17 + "trace_id" 0 + "parent_id" 14 + "start" 1603387534004813898 + "duration" 15324} + {"name" "django.middleware" + "service" "django" + "resource" "django.contrib.messages.middleware.MessageMiddleware.process_response" + "error" 0 + "span_id" 15 + "trace_id" 0 + "parent_id" 12 + "start" 1603387534004855040 + "duration" 13082} + {"name" "django.middleware" + "service" "django" + "resource" "django.middleware.csrf.CsrfViewMiddleware.process_response" + "error" 0 + "span_id" 10 + "trace_id" 0 + "parent_id" 6 + "start" 1603387534004897969 + "duration" 8658} + {"name" "django.middleware" + "service" "django" + "resource" "django.middleware.common.CommonMiddleware.process_response" + "error" 0 + "span_id" 7 + "trace_id" 0 + "parent_id" 3 + "start" 1603387534004931505 + "duration" 20394} + {"name" "django.middleware" + "service" "django" + "resource" "django.contrib.sessions.middleware.SessionMiddleware.process_response" + "error" 0 + "span_id" 4 + "trace_id" 0 + "parent_id" 1 + "start" 1603387534004977914 + "duration" 19810}]] diff --git a/tests/snapshots/tests.contrib.django.test_django_snapshots.test_urlpatterns_include.snap b/tests/snapshots/tests.contrib.django.test_django_snapshots.test_urlpatterns_include.snap new file mode 100644 index 00000000000..fa28e8c6ef9 --- /dev/null +++ b/tests/snapshots/tests.contrib.django.test_django_snapshots.test_urlpatterns_include.snap @@ -0,0 +1,247 @@ +[[{"name" "django.request" + "service" "django" + "resource" "GET include/test/" + "type" "http" + "error" 0 + "span_id" 0 + "trace_id" 0 + "parent_id" nil + "start" 1603387537908847729 + "duration" 38038773 + "meta" {"runtime-id" "6626318d980f452db5ef923e305e302b" + "http.route" "include/test/" + "http.url" "http://testserver/include/test/" + "django.user.is_authenticated" "False" + "http.status_code" "200" + "http.method" "GET" + "django.response.class" "django.http.response.HttpResponse" + "django.request.class" "django.core.handlers.wsgi.WSGIRequest" + "django.view" "tests.contrib.django.django_app.extra_urls.include_view"} + "metrics" {"_dd.agent_psr" 1.0 + "_sampling_priority_v1" 1 + "system.pid" 9240}} + {"name" "django.middleware" + "service" "django" + "resource" "django.contrib.sessions.middleware.SessionMiddleware.__call__" + "error" 0 + "span_id" 1 + "trace_id" 0 + "parent_id" 0 + "start" 1603387537909045000 + "duration" 37639314} + {"name" "django.middleware" + "service" "django" + "resource" "django.contrib.sessions.middleware.SessionMiddleware.process_request" + "error" 0 + "span_id" 2 + "trace_id" 0 + "parent_id" 1 + "start" 1603387537909199429 + "duration" 1181530} + {"name" "django.middleware" + "service" "django" + "resource" "django.middleware.common.CommonMiddleware.__call__" + "error" 0 + "span_id" 3 + "trace_id" 0 + "parent_id" 1 + "start" 1603387537910453615 + "duration" 36190074} + {"name" "django.middleware" + "service" "django" + "resource" "django.middleware.common.CommonMiddleware.process_request" + "error" 0 + "span_id" 5 + "trace_id" 0 + "parent_id" 3 + "start" 1603387537910518212 + "duration" 107969} + {"name" "django.middleware" + "service" "django" + "resource" "django.middleware.csrf.CsrfViewMiddleware.__call__" + "error" 0 + "span_id" 6 + "trace_id" 0 + "parent_id" 3 + "start" 1603387537910665740 + "duration" 35942066} + {"name" "django.middleware" + "service" "django" + "resource" "django.middleware.csrf.CsrfViewMiddleware.process_request" + "error" 0 + "span_id" 8 + "trace_id" 0 + "parent_id" 6 + "start" 1603387537910703392 + "duration" 64373} + {"name" "django.middleware" + "service" "django" + "resource" "django.contrib.auth.middleware.AuthenticationMiddleware.__call__" + "error" 0 + "span_id" 9 + "trace_id" 0 + "parent_id" 6 + "start" 1603387537910818022 + "duration" 35760147} + {"name" "django.middleware" + "service" "django" + "resource" "django.contrib.auth.middleware.AuthenticationMiddleware.process_request" + "error" 0 + "span_id" 11 + "trace_id" 0 + "parent_id" 9 + "start" 1603387537910861489 + "duration" 39944} + {"name" "django.middleware" + "service" "django" + "resource" "django.contrib.messages.middleware.MessageMiddleware.__call__" + "error" 0 + "span_id" 12 + "trace_id" 0 + "parent_id" 9 + "start" 1603387537910950384 + "duration" 35621220} + {"name" "django.middleware" + "service" "django" + "resource" "django.contrib.messages.middleware.MessageMiddleware.process_request" + "error" 0 + "span_id" 13 + "trace_id" 0 + "parent_id" 12 + "start" 1603387537910996288 + "duration" 8931596} + {"name" "django.middleware" + "service" "django" + "resource" "django.middleware.clickjacking.XFrameOptionsMiddleware.__call__" + "error" 0 + "span_id" 14 + "trace_id" 0 + "parent_id" 12 + "start" 1603387537919986228 + "duration" 26550363} + {"name" "django.middleware" + "service" "django" + "resource" "django.middleware.security.SecurityMiddleware.__call__" + "error" 0 + "span_id" 16 + "trace_id" 0 + "parent_id" 14 + "start" 1603387537920013220 + "duration" 26448729} + {"name" "django.middleware" + "service" "django" + "resource" "django.middleware.security.SecurityMiddleware.process_request" + "error" 0 + "span_id" 18 + "trace_id" 0 + "parent_id" 16 + "start" 1603387537920111977 + "duration" 11220} + {"name" "django.middleware" + "service" "django" + "resource" "tests.contrib.django.middleware.ClsMiddleware.__call__" + "error" 0 + "span_id" 19 + "trace_id" 0 + "parent_id" 16 + "start" 1603387537920143057 + "duration" 26206242} + {"name" "django.middleware" + "service" "django" + "resource" "tests.contrib.django.middleware.EverythingMiddleware" + "error" 0 + "span_id" 21 + "trace_id" 0 + "parent_id" 19 + "start" 1603387537920196641 + "duration" 26144513} + {"name" "django.middleware" + "service" "django" + "resource" "tests.contrib.django.middleware.EverythingMiddleware.__call__" + "error" 0 + "span_id" 22 + "trace_id" 0 + "parent_id" 21 + "start" 1603387537920213235 + "duration" 26115796} + {"name" "django.middleware" + "service" "django" + "resource" "django.middleware.csrf.CsrfViewMiddleware.process_view" + "error" 0 + "span_id" 23 + "trace_id" 0 + "parent_id" 22 + "start" 1603387537920408755 + "duration" 28925} + {"name" "django.middleware" + "service" "django" + "resource" "tests.contrib.django.middleware.EverythingMiddleware.process_view" + "error" 0 + "span_id" 24 + "trace_id" 0 + "parent_id" 22 + "start" 1603387537920451875 + "duration" 4969} + {"name" "django.view" + "service" "django" + "resource" "tests.contrib.django.django_app.extra_urls.include_view" + "error" 0 + "span_id" 25 + "trace_id" 0 + "parent_id" 22 + "start" 1603387537920508605 + "duration" 25781099} + {"name" "django.middleware" + "service" "django" + "resource" "django.middleware.security.SecurityMiddleware.process_response" + "error" 0 + "span_id" 20 + "trace_id" 0 + "parent_id" 16 + "start" 1603387537946419695 + "duration" 29006} + {"name" "django.middleware" + "service" "django" + "resource" "django.middleware.clickjacking.XFrameOptionsMiddleware.process_response" + "error" 0 + "span_id" 17 + "trace_id" 0 + "parent_id" 14 + "start" 1603387537946506947 + "duration" 23769} + {"name" "django.middleware" + "service" "django" + "resource" "django.contrib.messages.middleware.MessageMiddleware.process_response" + "error" 0 + "span_id" 15 + "trace_id" 0 + "parent_id" 12 + "start" 1603387537946556284 + "duration" 10636} + {"name" "django.middleware" + "service" "django" + "resource" "django.middleware.csrf.CsrfViewMiddleware.process_response" + "error" 0 + "span_id" 10 + "trace_id" 0 + "parent_id" 6 + "start" 1603387537946594986 + "duration" 8588} + {"name" "django.middleware" + "service" "django" + "resource" "django.middleware.common.CommonMiddleware.process_response" + "error" 0 + "span_id" 7 + "trace_id" 0 + "parent_id" 3 + "start" 1603387537946623643 + "duration" 15572} + {"name" "django.middleware" + "service" "django" + "resource" "django.contrib.sessions.middleware.SessionMiddleware.process_response" + "error" 0 + "span_id" 4 + "trace_id" 0 + "parent_id" 1 + "start" 1603387537946659595 + "duration" 19969}]] diff --git a/tests/snapshots/tests.contrib.django.test_django_snapshots.test_urlpatterns_include_21x.snap b/tests/snapshots/tests.contrib.django.test_django_snapshots.test_urlpatterns_include_21x.snap new file mode 100644 index 00000000000..0cac5142a0d --- /dev/null +++ b/tests/snapshots/tests.contrib.django.test_django_snapshots.test_urlpatterns_include_21x.snap @@ -0,0 +1,246 @@ +[[{"name" "django.request" + "service" "django" + "resource" "GET tests.contrib.django.django_app.extra_urls.include_view" + "type" "http" + "error" 0 + "span_id" 0 + "trace_id" 0 + "parent_id" nil + "start" 1603387533897093045 + "duration" 10309737 + "meta" {"runtime-id" "0758e559eba14ff2b34eb29faa85c427" + "django.view" "tests.contrib.django.django_app.extra_urls.include_view" + "http.url" "http://testserver/include/test/" + "django.request.class" "django.core.handlers.wsgi.WSGIRequest" + "http.method" "GET" + "django.user.is_authenticated" "False" + "http.status_code" "200" + "django.response.class" "django.http.response.HttpResponse"} + "metrics" {"_dd.agent_psr" 1.0 + "_sampling_priority_v1" 1 + "system.pid" 9236}} + {"name" "django.middleware" + "service" "django" + "resource" "django.contrib.sessions.middleware.SessionMiddleware.__call__" + "error" 0 + "span_id" 1 + "trace_id" 0 + "parent_id" 0 + "start" 1603387533897300098 + "duration" 9962826} + {"name" "django.middleware" + "service" "django" + "resource" "django.contrib.sessions.middleware.SessionMiddleware.process_request" + "error" 0 + "span_id" 2 + "trace_id" 0 + "parent_id" 1 + "start" 1603387533897454211 + "duration" 1887903} + {"name" "django.middleware" + "service" "django" + "resource" "django.middleware.common.CommonMiddleware.__call__" + "error" 0 + "span_id" 3 + "trace_id" 0 + "parent_id" 1 + "start" 1603387533899400022 + "duration" 7822962} + {"name" "django.middleware" + "service" "django" + "resource" "django.middleware.common.CommonMiddleware.process_request" + "error" 0 + "span_id" 5 + "trace_id" 0 + "parent_id" 3 + "start" 1603387533899425552 + "duration" 169248} + {"name" "django.middleware" + "service" "django" + "resource" "django.middleware.csrf.CsrfViewMiddleware.__call__" + "error" 0 + "span_id" 6 + "trace_id" 0 + "parent_id" 3 + "start" 1603387533899663091 + "duration" 7525060} + {"name" "django.middleware" + "service" "django" + "resource" "django.middleware.csrf.CsrfViewMiddleware.process_request" + "error" 0 + "span_id" 8 + "trace_id" 0 + "parent_id" 6 + "start" 1603387533899683232 + "duration" 16345} + {"name" "django.middleware" + "service" "django" + "resource" "django.contrib.auth.middleware.AuthenticationMiddleware.__call__" + "error" 0 + "span_id" 9 + "trace_id" 0 + "parent_id" 6 + "start" 1603387533899721092 + "duration" 7441399} + {"name" "django.middleware" + "service" "django" + "resource" "django.contrib.auth.middleware.AuthenticationMiddleware.process_request" + "error" 0 + "span_id" 11 + "trace_id" 0 + "parent_id" 9 + "start" 1603387533899737957 + "duration" 13277} + {"name" "django.middleware" + "service" "django" + "resource" "django.contrib.messages.middleware.MessageMiddleware.__call__" + "error" 0 + "span_id" 12 + "trace_id" 0 + "parent_id" 9 + "start" 1603387533899766876 + "duration" 7390563} + {"name" "django.middleware" + "service" "django" + "resource" "django.contrib.messages.middleware.MessageMiddleware.process_request" + "error" 0 + "span_id" 13 + "trace_id" 0 + "parent_id" 12 + "start" 1603387533899783255 + "duration" 6700866} + {"name" "django.middleware" + "service" "django" + "resource" "django.middleware.clickjacking.XFrameOptionsMiddleware.__call__" + "error" 0 + "span_id" 14 + "trace_id" 0 + "parent_id" 12 + "start" 1603387533906538773 + "duration" 589932} + {"name" "django.middleware" + "service" "django" + "resource" "django.middleware.security.SecurityMiddleware.__call__" + "error" 0 + "span_id" 16 + "trace_id" 0 + "parent_id" 14 + "start" 1603387533906574842 + "duration" 518289} + {"name" "django.middleware" + "service" "django" + "resource" "django.middleware.security.SecurityMiddleware.process_request" + "error" 0 + "span_id" 18 + "trace_id" 0 + "parent_id" 16 + "start" 1603387533906595177 + "duration" 8341} + {"name" "django.middleware" + "service" "django" + "resource" "tests.contrib.django.middleware.ClsMiddleware.__call__" + "error" 0 + "span_id" 19 + "trace_id" 0 + "parent_id" 16 + "start" 1603387533906622282 + "duration" 437063} + {"name" "django.middleware" + "service" "django" + "resource" "tests.contrib.django.middleware.EverythingMiddleware" + "error" 0 + "span_id" 21 + "trace_id" 0 + "parent_id" 19 + "start" 1603387533906639312 + "duration" 414366} + {"name" "django.middleware" + "service" "django" + "resource" "tests.contrib.django.middleware.EverythingMiddleware.__call__" + "error" 0 + "span_id" 22 + "trace_id" 0 + "parent_id" 21 + "start" 1603387533906658146 + "duration" 383658} + {"name" "django.middleware" + "service" "django" + "resource" "django.middleware.csrf.CsrfViewMiddleware.process_view" + "error" 0 + "span_id" 23 + "trace_id" 0 + "parent_id" 22 + "start" 1603387533906869019 + "duration" 25469} + {"name" "django.middleware" + "service" "django" + "resource" "tests.contrib.django.middleware.EverythingMiddleware.process_view" + "error" 0 + "span_id" 24 + "trace_id" 0 + "parent_id" 22 + "start" 1603387533906915258 + "duration" 7068} + {"name" "django.view" + "service" "django" + "resource" "tests.contrib.django.django_app.extra_urls.include_view" + "error" 0 + "span_id" 25 + "trace_id" 0 + "parent_id" 22 + "start" 1603387533906960021 + "duration" 48347} + {"name" "django.middleware" + "service" "django" + "resource" "django.middleware.security.SecurityMiddleware.process_response" + "error" 0 + "span_id" 20 + "trace_id" 0 + "parent_id" 16 + "start" 1603387533907081325 + "duration" 7433} + {"name" "django.middleware" + "service" "django" + "resource" "django.middleware.clickjacking.XFrameOptionsMiddleware.process_response" + "error" 0 + "span_id" 17 + "trace_id" 0 + "parent_id" 14 + "start" 1603387533907108847 + "duration" 15108} + {"name" "django.middleware" + "service" "django" + "resource" "django.contrib.messages.middleware.MessageMiddleware.process_response" + "error" 0 + "span_id" 15 + "trace_id" 0 + "parent_id" 12 + "start" 1603387533907144816 + "duration" 8196} + {"name" "django.middleware" + "service" "django" + "resource" "django.middleware.csrf.CsrfViewMiddleware.process_response" + "error" 0 + "span_id" 10 + "trace_id" 0 + "parent_id" 6 + "start" 1603387533907177054 + "duration" 6843} + {"name" "django.middleware" + "service" "django" + "resource" "django.middleware.common.CommonMiddleware.process_response" + "error" 0 + "span_id" 7 + "trace_id" 0 + "parent_id" 3 + "start" 1603387533907202779 + "duration" 15472} + {"name" "django.middleware" + "service" "django" + "resource" "django.contrib.sessions.middleware.SessionMiddleware.process_response" + "error" 0 + "span_id" 4 + "trace_id" 0 + "parent_id" 1 + "start" 1603387533907238622 + "duration" 19434}]]