diff options
| author | Przemysław Suliga <suligap@gmail.com> | 2016-03-06 11:34:23 +0100 |
|---|---|---|
| committer | Tim Graham <timograham@gmail.com> | 2016-03-08 11:44:37 -0500 |
| commit | 96ec67a7cf89a136e793305343c5bba8521cdb47 (patch) | |
| tree | 7e68622ac11cb96c0040b5bf976e627f377b5264 /tests | |
| parent | b4250ea04a88f6c4fdf84dc8624baa1cf3e0f568 (diff) | |
Fixed #26332 -- Fixed a race condition in BaseCache.get_or_set().
Diffstat (limited to 'tests')
| -rw-r--r-- | tests/cache/tests.py | 9 |
1 files changed, 8 insertions, 1 deletions
diff --git a/tests/cache/tests.py b/tests/cache/tests.py index e3ae3d83ce..4a3d4bb128 100644 --- a/tests/cache/tests.py +++ b/tests/cache/tests.py @@ -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', |
