Django span names according to convention (#992)

This commit is contained in:
HiveTraum
2020-09-22 01:30:03 +05:00
committed by GitHub
parent cebfa2f3c3
commit 06511cd31a
4 changed files with 82 additions and 12 deletions

View File

@ -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")