Thanks Zach Smith for the patch.
This commit is contained in:
parent
02add43568
commit
6c5a30b4e7
|
@ -990,6 +990,18 @@ class CreateCacheTableForDBCacheTests(TestCase):
|
||||||
router.routers = old_routers
|
router.routers = old_routers
|
||||||
|
|
||||||
|
|
||||||
|
class PicklingSideEffect(object):
|
||||||
|
|
||||||
|
def __init__(self, cache):
|
||||||
|
self.cache = cache
|
||||||
|
self.locked = False
|
||||||
|
|
||||||
|
def __getstate__(self):
|
||||||
|
if self.cache._lock.active_writers:
|
||||||
|
self.locked = True
|
||||||
|
return {}
|
||||||
|
|
||||||
|
|
||||||
@override_settings(CACHES=caches_setting_for_tests(
|
@override_settings(CACHES=caches_setting_for_tests(
|
||||||
BACKEND='django.core.cache.backends.locmem.LocMemCache',
|
BACKEND='django.core.cache.backends.locmem.LocMemCache',
|
||||||
))
|
))
|
||||||
|
@ -1025,6 +1037,15 @@ class LocMemCacheTests(BaseCacheTests, TestCase):
|
||||||
self.assertEqual(caches['default'].get('value'), 42)
|
self.assertEqual(caches['default'].get('value'), 42)
|
||||||
self.assertEqual(caches['other'].get('value'), None)
|
self.assertEqual(caches['other'].get('value'), None)
|
||||||
|
|
||||||
|
def test_locking_on_pickle(self):
|
||||||
|
"""#20613/#18541 -- Ensures pickling is done outside of the lock."""
|
||||||
|
bad_obj = PicklingSideEffect(cache)
|
||||||
|
cache.set('set', bad_obj)
|
||||||
|
self.assertFalse(bad_obj.locked, "Cache was locked during pickling")
|
||||||
|
|
||||||
|
cache.add('add', bad_obj)
|
||||||
|
self.assertFalse(bad_obj.locked, "Cache was locked during pickling")
|
||||||
|
|
||||||
def test_incr_decr_timeout(self):
|
def test_incr_decr_timeout(self):
|
||||||
"""incr/decr does not modify expiry time (matches memcached behavior)"""
|
"""incr/decr does not modify expiry time (matches memcached behavior)"""
|
||||||
key = 'value'
|
key = 'value'
|
||||||
|
|
Loading…
Reference in New Issue