Configurable Middleware Position for Django Instrumentation (#2912)

This commit is contained in:
Sai Chander
2024-10-25 04:46:25 +08:00
committed by GitHub
parent 39bd7fa79a
commit e49806ea35
4 changed files with 108 additions and 3 deletions

View File

@ -157,6 +157,46 @@ class TestMiddleware(WsgiTestBase):
super().tearDownClass()
conf.settings = conf.LazySettings()
def test_middleware_added_at_position(self):
_django_instrumentor.uninstrument()
if DJANGO_2_0:
middleware = conf.settings.MIDDLEWARE
else:
middleware = conf.settings.MIDDLEWARE_CLASSES
# adding two dummy middlewares
temprory_middelware = "django.utils.deprecation.MiddlewareMixin"
middleware.append(temprory_middelware)
middleware.append(temprory_middelware)
middleware_position = 1
_django_instrumentor.instrument(
middleware_position=middleware_position
)
self.assertEqual(
middleware[middleware_position],
"opentelemetry.instrumentation.django.middleware.otel_middleware._DjangoMiddleware",
)
def test_middleware_added_at_position_if_wrong_position(self):
_django_instrumentor.uninstrument()
if DJANGO_2_0:
middleware = conf.settings.MIDDLEWARE
else:
middleware = conf.settings.MIDDLEWARE_CLASSES
# adding middleware
temprory_middelware = "django.utils.deprecation.MiddlewareMixin"
middleware.append(temprory_middelware)
middleware_position = (
756 # wrong position out of bound of middleware length
)
_django_instrumentor.instrument(
middleware_position=middleware_position
)
self.assertEqual(
middleware[0],
"opentelemetry.instrumentation.django.middleware.otel_middleware._DjangoMiddleware",
)
def test_templated_route_get(self):
Client().get("/route/2020/template/")