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

@ -72,6 +72,37 @@ class TestMiddleware(WsgiTestBase):
in middleware
)
@patch(
"opentelemetry.instrumentation.django.middleware.sqlcommenter_middleware.SqlCommenter"
)
def test_middleware_added_at_position(self, sqlcommenter_middleware):
_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(
is_sql_commentor_enabled=True,
middleware_position=middleware_position,
)
instance = sqlcommenter_middleware.return_value
instance.get_response = HttpResponse()
self.assertEqual(
middleware[middleware_position],
"opentelemetry.instrumentation.django.middleware.otel_middleware._DjangoMiddleware",
)
self.assertEqual(
middleware[middleware_position + 1],
"opentelemetry.instrumentation.django.middleware.sqlcommenter_middleware.SqlCommenter",
)
@patch(
"opentelemetry.instrumentation.django.middleware.sqlcommenter_middleware._get_opentelemetry_values"
)