Skip to content

Commit a586d92

Browse files
committed
add tests
1 parent a62d9d9 commit a586d92

File tree

3 files changed

+72
-0
lines changed

3 files changed

+72
-0
lines changed

instrumentation/opentelemetry-instrumentation-django/tests/test_middleware.py

Lines changed: 37 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -67,6 +67,7 @@
6767
route_span_name,
6868
traced,
6969
traced_template,
70+
DummyMiddleware,
7071
)
7172

7273
DJANGO_2_0 = VERSION >= (2, 0)
@@ -144,6 +145,42 @@ def tearDown(self):
144145
def tearDownClass(cls):
145146
super().tearDownClass()
146147
conf.settings = conf.LazySettings()
148+
149+
def test_middleware_added_at_position(self):
150+
_django_instrumentor.uninstrument()
151+
if DJANGO_2_0:
152+
middleware = conf.settings.MIDDLEWARE
153+
else:
154+
middleware = conf.settings.MIDDLEWARE_CLASSES
155+
# adding two dummy middlewares
156+
temprory_middelware = "django.utils.deprecation.MiddlewareMixin"
157+
middleware.append(temprory_middelware)
158+
middleware.append(temprory_middelware)
159+
160+
middleware_position = 1
161+
_django_instrumentor.instrument(middleware_position=middleware_position)
162+
self.assertEqual(
163+
middleware[middleware_position],
164+
"opentelemetry.instrumentation.django.middleware.otel_middleware._DjangoMiddleware"
165+
)
166+
167+
168+
def test_middleware_added_at_position_if_wrong_position(self):
169+
_django_instrumentor.uninstrument()
170+
if DJANGO_2_0:
171+
middleware = conf.settings.MIDDLEWARE
172+
else:
173+
middleware = conf.settings.MIDDLEWARE_CLASSES
174+
# adding middleware
175+
temprory_middelware = "django.utils.deprecation.MiddlewareMixin"
176+
middleware.append(temprory_middelware)
177+
middleware_position = 756 # wrong position out of bound of middleware length
178+
_django_instrumentor.instrument(middleware_position=middleware_position)
179+
self.assertEqual(
180+
middleware[len(middleware) - 1],
181+
"opentelemetry.instrumentation.django.middleware.otel_middleware._DjangoMiddleware"
182+
)
183+
147184

148185
def test_templated_route_get(self):
149186
Client().get("/route/2020/template/")

instrumentation/opentelemetry-instrumentation-django/tests/test_sqlcommenter.py

Lines changed: 28 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -71,6 +71,34 @@ def test_middleware_added(self, sqlcommenter_middleware):
7171
"opentelemetry.instrumentation.django.middleware.sqlcommenter_middleware.SqlCommenter"
7272
in middleware
7373
)
74+
75+
@patch(
76+
"opentelemetry.instrumentation.django.middleware.sqlcommenter_middleware.SqlCommenter"
77+
)
78+
def test_middleware_added_at_position(self, sqlcommenter_middleware):
79+
_django_instrumentor.uninstrument()
80+
if DJANGO_2_0:
81+
middleware = conf.settings.MIDDLEWARE
82+
else:
83+
middleware = conf.settings.MIDDLEWARE_CLASSES
84+
85+
# adding two dummy middlewares
86+
temprory_middelware = "django.utils.deprecation.MiddlewareMixin"
87+
middleware.append(temprory_middelware)
88+
middleware.append(temprory_middelware)
89+
90+
middleware_position = 1
91+
_django_instrumentor.instrument(is_sql_commentor_enabled=True, middleware_position=middleware_position)
92+
instance = sqlcommenter_middleware.return_value
93+
instance.get_response = HttpResponse()
94+
self.assertEqual(
95+
middleware[middleware_position],
96+
"opentelemetry.instrumentation.django.middleware.otel_middleware._DjangoMiddleware"
97+
)
98+
self.assertEqual(
99+
middleware[middleware_position + 1],
100+
"opentelemetry.instrumentation.django.middleware.sqlcommenter_middleware.SqlCommenter"
101+
)
74102

75103
@patch(
76104
"opentelemetry.instrumentation.django.middleware.sqlcommenter_middleware._get_opentelemetry_values"

instrumentation/opentelemetry-instrumentation-django/tests/views.py

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -82,3 +82,10 @@ async def async_with_custom_header(request):
8282
response.headers["custom-test-header-1"] = "test-header-value-1"
8383
response.headers["custom-test-header-2"] = "test-header-value-2"
8484
return response
85+
86+
class DummyMiddleware:
87+
def __init__(self, get_response):
88+
self.get_response = get_response
89+
90+
def __call__(self, request):
91+
return self.get_response(request)

0 commit comments

Comments
 (0)