mirror of
https://github.com/open-telemetry/opentelemetry-python-contrib.git
synced 2025-07-31 06:03:21 +08:00
Django span names according to convention (#992)
This commit is contained in:
@ -15,6 +15,7 @@
|
||||
from sys import modules
|
||||
from unittest.mock import patch
|
||||
|
||||
from django import VERSION
|
||||
from django.conf import settings
|
||||
from django.conf.urls import url
|
||||
from django.test import Client
|
||||
@ -28,7 +29,16 @@ from opentelemetry.trace.status import StatusCanonicalCode
|
||||
from opentelemetry.util import ExcludeList
|
||||
|
||||
# pylint: disable=import-error
|
||||
from .views import error, excluded, excluded_noarg, excluded_noarg2, traced
|
||||
from .views import (
|
||||
error,
|
||||
excluded,
|
||||
excluded_noarg,
|
||||
excluded_noarg2,
|
||||
route_span_name,
|
||||
traced,
|
||||
)
|
||||
|
||||
DJANGO_2_2 = VERSION >= (2, 2)
|
||||
|
||||
urlpatterns = [
|
||||
url(r"^traced/", traced),
|
||||
@ -36,6 +46,7 @@ urlpatterns = [
|
||||
url(r"^excluded_arg/", excluded),
|
||||
url(r"^excluded_noarg/", excluded_noarg),
|
||||
url(r"^excluded_noarg2/", excluded_noarg2),
|
||||
url(r"^span_name/([0-9]{4})/$", route_span_name),
|
||||
]
|
||||
_django_instrumentor = DjangoInstrumentor()
|
||||
|
||||
@ -65,7 +76,9 @@ class TestMiddleware(WsgiTestBase):
|
||||
|
||||
span = spans[0]
|
||||
|
||||
self.assertEqual(span.name, "traced")
|
||||
self.assertEqual(
|
||||
span.name, "^traced/" if DJANGO_2_2 else "tests.views.traced"
|
||||
)
|
||||
self.assertEqual(span.kind, SpanKind.SERVER)
|
||||
self.assertEqual(span.status.canonical_code, StatusCanonicalCode.OK)
|
||||
self.assertEqual(span.attributes["http.method"], "GET")
|
||||
@ -84,7 +97,9 @@ class TestMiddleware(WsgiTestBase):
|
||||
|
||||
span = spans[0]
|
||||
|
||||
self.assertEqual(span.name, "traced")
|
||||
self.assertEqual(
|
||||
span.name, "^traced/" if DJANGO_2_2 else "tests.views.traced"
|
||||
)
|
||||
self.assertEqual(span.kind, SpanKind.SERVER)
|
||||
self.assertEqual(span.status.canonical_code, StatusCanonicalCode.OK)
|
||||
self.assertEqual(span.attributes["http.method"], "POST")
|
||||
@ -104,7 +119,9 @@ class TestMiddleware(WsgiTestBase):
|
||||
|
||||
span = spans[0]
|
||||
|
||||
self.assertEqual(span.name, "error")
|
||||
self.assertEqual(
|
||||
span.name, "^error/" if DJANGO_2_2 else "tests.views.error"
|
||||
)
|
||||
self.assertEqual(span.kind, SpanKind.SERVER)
|
||||
self.assertEqual(
|
||||
span.status.canonical_code, StatusCanonicalCode.UNKNOWN
|
||||
@ -136,3 +153,24 @@ class TestMiddleware(WsgiTestBase):
|
||||
client.get("/excluded_noarg2/")
|
||||
span_list = self.memory_exporter.get_finished_spans()
|
||||
self.assertEqual(len(span_list), 1)
|
||||
|
||||
def test_span_name(self):
|
||||
Client().get("/span_name/1234/")
|
||||
span_list = self.memory_exporter.get_finished_spans()
|
||||
self.assertEqual(len(span_list), 1)
|
||||
|
||||
span = span_list[0]
|
||||
self.assertEqual(
|
||||
span.name,
|
||||
"^span_name/([0-9]{4})/$"
|
||||
if DJANGO_2_2
|
||||
else "tests.views.route_span_name",
|
||||
)
|
||||
|
||||
def test_span_name_404(self):
|
||||
Client().get("/span_name/1234567890/")
|
||||
span_list = self.memory_exporter.get_finished_spans()
|
||||
self.assertEqual(len(span_list), 1)
|
||||
|
||||
span = span_list[0]
|
||||
self.assertEqual(span.name, "HTTP GET")
|
||||
|
Reference in New Issue
Block a user