summaryrefslogtreecommitdiff
path: root/tests
diff options
context:
space:
mode:
authorNick Pope <nick.pope@flightdataservices.com>2019-01-18 23:26:50 +0000
committerMariusz Felisiak <felisiak.mariusz@gmail.com>2020-09-16 09:40:30 +0200
commitb4d46df5cad6c936d83dd4f8038d0dc1121bc21e (patch)
tree7c200907ff9b349c0d160480cacd088ba23caa63 /tests
parentcda0a3d7773b44c28669dfa1a41cb6203c5c298e (diff)
Fixed #29887 -- Added a cache backend for pymemcache.
Diffstat (limited to 'tests')
-rw-r--r--tests/cache/tests.py31
-rw-r--r--tests/requirements/py3.txt1
2 files changed, 32 insertions, 0 deletions
diff --git a/tests/cache/tests.py b/tests/cache/tests.py
index 9a800e2b6d..1ef2cc1bc1 100644
--- a/tests/cache/tests.py
+++ b/tests/cache/tests.py
@@ -1277,6 +1277,7 @@ for _cache_params in settings.CACHES.values():
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')
# The memcached backends don't support cull-related options like `MAX_ENTRIES`.
memcached_excluded_caches = {'cull', 'zero_cull'}
@@ -1459,6 +1460,36 @@ class PyLibMCCacheTests(BaseMemcachedTests, TestCase):
self.assertEqual(cache.client_servers, [expected])
+@unittest.skipUnless(PyMemcacheCache_params, 'PyMemcacheCache backend not configured')
+@override_settings(CACHES=caches_setting_for_tests(
+ base=PyMemcacheCache_params,
+ exclude=memcached_excluded_caches,
+))
+class PyMemcacheCacheTests(BaseMemcachedTests, TestCase):
+ base_params = PyMemcacheCache_params
+
+ def test_pymemcache_highest_pickle_version(self):
+ self.assertEqual(
+ cache._cache.default_kwargs['serde']._serialize_func.keywords['pickle_version'],
+ pickle.HIGHEST_PROTOCOL,
+ )
+ for cache_key in settings.CACHES:
+ for client_key, client in caches[cache_key]._cache.clients.items():
+ with self.subTest(cache_key=cache_key, server=client_key):
+ self.assertEqual(
+ client.serde._serialize_func.keywords['pickle_version'],
+ pickle.HIGHEST_PROTOCOL,
+ )
+
+ @override_settings(CACHES=caches_setting_for_tests(
+ base=PyMemcacheCache_params,
+ exclude=memcached_excluded_caches,
+ OPTIONS={'no_delay': True},
+ ))
+ def test_pymemcache_options(self):
+ self.assertIs(cache._cache.default_kwargs['no_delay'], True)
+
+
@override_settings(CACHES=caches_setting_for_tests(
BACKEND='django.core.cache.backends.filebased.FileBasedCache',
))
diff --git a/tests/requirements/py3.txt b/tests/requirements/py3.txt
index 694b803b36..d5c59b4e30 100644
--- a/tests/requirements/py3.txt
+++ b/tests/requirements/py3.txt
@@ -8,6 +8,7 @@ numpy
Pillow >= 6.2.0
# pylibmc/libmemcached can't be built on Windows.
pylibmc; sys.platform != 'win32'
+pymemcache >= 3.4.0
python-memcached >= 1.59
pytz
pywatchman; sys.platform != 'win32'