|
@@ -11,6 +11,7 @@ import tempfile
|
|
|
import threading
|
|
|
import time
|
|
|
import unittest
|
|
|
+import warnings
|
|
|
from pathlib import Path
|
|
|
from unittest import mock, skipIf
|
|
|
|
|
@@ -35,13 +36,14 @@ from django.template.context_processors import csrf
|
|
|
from django.template.response import TemplateResponse
|
|
|
from django.test import (
|
|
|
RequestFactory, SimpleTestCase, TestCase, TransactionTestCase,
|
|
|
- override_settings,
|
|
|
+ ignore_warnings, override_settings,
|
|
|
)
|
|
|
from django.test.signals import setting_changed
|
|
|
from django.utils import timezone, translation
|
|
|
from django.utils.cache import (
|
|
|
get_cache_key, learn_cache_key, patch_cache_control, patch_vary_headers,
|
|
|
)
|
|
|
+from django.utils.deprecation import RemovedInDjango41Warning
|
|
|
from django.views.decorators.cache import cache_control, cache_page
|
|
|
|
|
|
from .models import Poll, expensive_calculation
|
|
@@ -1276,7 +1278,6 @@ configured_caches = {}
|
|
|
for _cache_params in settings.CACHES.values():
|
|
|
configured_caches[_cache_params['BACKEND']] = _cache_params
|
|
|
|
|
|
-MemcachedCache_params = configured_caches.get('django.core.cache.backends.memcached.MemcachedCache')
|
|
|
PyLibMCCache_params = configured_caches.get('django.core.cache.backends.memcached.PyLibMCCache')
|
|
|
PyMemcacheCache_params = configured_caches.get('django.core.cache.backends.memcached.PyMemcacheCache')
|
|
|
|
|
@@ -1349,10 +1350,7 @@ class BaseMemcachedTests(BaseCacheTests):
|
|
|
|
|
|
|
|
|
|
|
|
-
|
|
|
-
|
|
|
-
|
|
|
- max_value_length = getattr(cache._lib, 'SERVER_MAX_VALUE_LENGTH', 1048576)
|
|
|
+ max_value_length = 2 ** 20
|
|
|
|
|
|
cache.set('small_value', 'a')
|
|
|
self.assertEqual(cache.get('small_value'), 'a')
|
|
@@ -1361,11 +1359,10 @@ class BaseMemcachedTests(BaseCacheTests):
|
|
|
try:
|
|
|
cache.set('small_value', large_value)
|
|
|
except Exception:
|
|
|
-
|
|
|
-
|
|
|
-
|
|
|
-
|
|
|
-
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
pass
|
|
|
|
|
|
value = cache.get('small_value')
|
|
@@ -1390,6 +1387,11 @@ class BaseMemcachedTests(BaseCacheTests):
|
|
|
self.assertEqual(failing_keys, ['key'])
|
|
|
|
|
|
|
|
|
+
|
|
|
+MemcachedCache_params = configured_caches.get('django.core.cache.backends.memcached.MemcachedCache')
|
|
|
+
|
|
|
+
|
|
|
+@ignore_warnings(category=RemovedInDjango41Warning)
|
|
|
@unittest.skipUnless(MemcachedCache_params, "MemcachedCache backend not configured")
|
|
|
@override_settings(CACHES=caches_setting_for_tests(
|
|
|
base=MemcachedCache_params,
|
|
@@ -1421,6 +1423,32 @@ class MemcachedCacheTests(BaseMemcachedTests, TestCase):
|
|
|
self.assertEqual(cache.get('key_default_none', default='default'), 'default')
|
|
|
|
|
|
|
|
|
+class MemcachedCacheDeprecationTests(SimpleTestCase):
|
|
|
+ def test_warning(self):
|
|
|
+ from django.core.cache.backends.memcached import MemcachedCache
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+ warnings.filterwarnings(
|
|
|
+ 'error',
|
|
|
+ 'MemcachedCache is deprecated',
|
|
|
+ category=RemovedInDjango41Warning,
|
|
|
+ )
|
|
|
+ try:
|
|
|
+ msg = (
|
|
|
+ 'MemcachedCache is deprecated in favor of PyMemcacheCache and '
|
|
|
+ 'PyLibMCCache.'
|
|
|
+ )
|
|
|
+ with self.assertRaisesMessage(RemovedInDjango41Warning, msg):
|
|
|
+ MemcachedCache('127.0.0.1:11211', {})
|
|
|
+ finally:
|
|
|
+ warnings.filterwarnings(
|
|
|
+ 'ignore',
|
|
|
+ 'MemcachedCache is deprecated',
|
|
|
+ category=RemovedInDjango41Warning,
|
|
|
+ )
|
|
|
+
|
|
|
+
|
|
|
@unittest.skipUnless(PyLibMCCache_params, "PyLibMCCache backend not configured")
|
|
|
@override_settings(CACHES=caches_setting_for_tests(
|
|
|
base=PyLibMCCache_params,
|