mirror of
https://github.com/django/django.git
synced 2025-10-24 14:16:09 +00:00
Fixed #26332 -- Fixed a race condition in BaseCache.get_or_set().
This commit is contained in:
committed by
Tim Graham
parent
b4250ea04a
commit
96ec67a7cf
9
tests/cache/tests.py
vendored
9
tests/cache/tests.py
vendored
@@ -30,7 +30,7 @@ from django.template import engines
|
||||
from django.template.context_processors import csrf
|
||||
from django.template.response import TemplateResponse
|
||||
from django.test import (
|
||||
RequestFactory, SimpleTestCase, TestCase, TransactionTestCase,
|
||||
RequestFactory, SimpleTestCase, TestCase, TransactionTestCase, mock,
|
||||
override_settings,
|
||||
)
|
||||
from django.test.signals import setting_changed
|
||||
@@ -931,6 +931,13 @@ class BaseCacheTests(object):
|
||||
self.assertEqual(cache.get_or_set('brian', 1979, version=2), 1979)
|
||||
self.assertIsNone(cache.get('brian', version=3))
|
||||
|
||||
def test_get_or_set_racing(self):
|
||||
with mock.patch('%s.%s' % (settings.CACHES['default']['BACKEND'], 'add')) as cache_add:
|
||||
# Simulate cache.add() failing to add a value. In that case, the
|
||||
# default value should be returned.
|
||||
cache_add.return_value = False
|
||||
self.assertEqual(cache.get_or_set('key', 'default'), 'default')
|
||||
|
||||
|
||||
@override_settings(CACHES=caches_setting_for_tests(
|
||||
BACKEND='django.core.cache.backends.db.DatabaseCache',
|
||||
|
||||
Reference in New Issue
Block a user