diff --git a/contrib/opencensus-ext-django/CHANGELOG.md b/contrib/opencensus-ext-django/CHANGELOG.md index 1228e692a..45b15514f 100644 --- a/contrib/opencensus-ext-django/CHANGELOG.md +++ b/contrib/opencensus-ext-django/CHANGELOG.md @@ -2,6 +2,9 @@ ## Unreleased +- Fixed support for Django 4.1 +- ([#1159](https://github.com/census-instrumentation/opencensus-python/pull/1159)) + ## 0.7.5 Released 2021-05-13 diff --git a/contrib/opencensus-ext-django/opencensus/ext/django/middleware.py b/contrib/opencensus-ext-django/opencensus/ext/django/middleware.py index 80436f1e9..e9c116983 100644 --- a/contrib/opencensus-ext-django/opencensus/ext/django/middleware.py +++ b/contrib/opencensus-ext-django/opencensus/ext/django/middleware.py @@ -146,8 +146,8 @@ def _trace_db_call(execute, sql, params, many, context): class OpencensusMiddleware(MiddlewareMixin): """Saves the request in thread local""" - def __init__(self, get_response=None): - self.get_response = get_response + def __init__(self, get_response): + super(OpencensusMiddleware, self).__init__(get_response) settings = getattr(django.conf.settings, 'OPENCENSUS', {}) settings = settings.get('TRACE', {}) diff --git a/contrib/opencensus-ext-django/tests/test_django_db_middleware.py b/contrib/opencensus-ext-django/tests/test_django_db_middleware.py index 18bf385c9..4c6969ae4 100644 --- a/contrib/opencensus-ext-django/tests/test_django_db_middleware.py +++ b/contrib/opencensus-ext-django/tests/test_django_db_middleware.py @@ -18,11 +18,16 @@ import django import mock import pytest +from django.http import HttpResponse from django.test.utils import teardown_test_environment from opencensus.trace import execution_context +def get_response(request): + return HttpResponse() + + class TestOpencensusDatabaseMiddleware(unittest.TestCase): def setUp(self): from django.conf import settings as django_settings @@ -50,7 +55,7 @@ def test_process_request(self): mock_execute = mock.Mock() mock_execute.return_value = "Mock result" - middleware.OpencensusMiddleware() + middleware.OpencensusMiddleware(get_response) patch_no_tracer = mock.patch( 'opencensus.ext.django.middleware._get_current_tracer', diff --git a/contrib/opencensus-ext-django/tests/test_django_middleware.py b/contrib/opencensus-ext-django/tests/test_django_middleware.py index 522ea458c..e502e0be0 100644 --- a/contrib/opencensus-ext-django/tests/test_django_middleware.py +++ b/contrib/opencensus-ext-django/tests/test_django_middleware.py @@ -17,6 +17,7 @@ import unittest import mock +from django.http import HttpResponse from django.test import RequestFactory from django.test.utils import teardown_test_environment @@ -27,6 +28,10 @@ from opencensus.trace.propagation import trace_context_http_header_format +def get_response(request): + return HttpResponse() + + class TestOpencensusMiddleware(unittest.TestCase): def setUp(self): @@ -44,7 +49,7 @@ def tearDown(self): def test_constructor_default(self): from opencensus.ext.django import middleware - middleware = middleware.OpencensusMiddleware() + middleware = middleware.OpencensusMiddleware(get_response) assert isinstance(middleware.sampler, samplers.ProbabilitySampler) assert isinstance(middleware.exporter, print_exporter.PrintExporter) @@ -69,7 +74,7 @@ def test_configuration(self): settings) with patch_settings: - middleware = middleware.OpencensusMiddleware() + middleware = middleware.OpencensusMiddleware(get_response) assert isinstance(middleware.sampler, samplers.AlwaysOnSampler) assert isinstance(middleware.exporter, print_exporter.PrintExporter) @@ -100,7 +105,7 @@ def test_process_request(self): settings) with patch_settings: - middleware_obj = middleware.OpencensusMiddleware() + middleware_obj = middleware.OpencensusMiddleware(get_response) # test process_request middleware_obj.process_request(django_request) @@ -148,7 +153,7 @@ def test_excludelist_path(self): settings) with patch_settings: - middleware_obj = middleware.OpencensusMiddleware() + middleware_obj = middleware.OpencensusMiddleware(get_response) django_request = RequestFactory().get('/test_excludelist_path') disabled = utils.disable_tracing_url(django_request.path, @@ -204,7 +209,7 @@ def test_process_response(self): settings) with patch_settings: - middleware_obj = middleware.OpencensusMiddleware() + middleware_obj = middleware.OpencensusMiddleware(get_response) middleware_obj.process_request(django_request) tracer = middleware._get_current_tracer() @@ -259,7 +264,7 @@ def test_process_response_unfinished_child_span(self): settings) with patch_settings: - middleware_obj = middleware.OpencensusMiddleware() + middleware_obj = middleware.OpencensusMiddleware(get_response) middleware_obj.process_request(django_request) tracer = middleware._get_current_tracer() @@ -316,7 +321,7 @@ def test_process_exception(self): settings) with patch_settings: - middleware_obj = middleware.OpencensusMiddleware() + middleware_obj = middleware.OpencensusMiddleware(get_response) tb = None try: