From 5a8e8f80bb82a867eab7e4d9d099f21d0a976d22 Mon Sep 17 00:00:00 2001 From: Michael Lissner Date: Tue, 25 May 2021 09:31:26 -0700 Subject: Fixed #32772 -- Made database cache count size once per set. --- tests/cache/tests.py | 13 +++++++++++++ 1 file changed, 13 insertions(+) (limited to 'tests/cache') diff --git a/tests/cache/tests.py b/tests/cache/tests.py index 65a8f12fc7..783055182d 100644 --- a/tests/cache/tests.py +++ b/tests/cache/tests.py @@ -40,6 +40,7 @@ from django.test import ( ignore_warnings, override_settings, ) from django.test.signals import setting_changed +from django.test.utils import CaptureQueriesContext from django.utils import timezone, translation from django.utils.cache import ( get_cache_key, learn_cache_key, patch_cache_control, patch_vary_headers, @@ -1117,6 +1118,18 @@ class DBCacheTests(BaseCacheTests, TransactionTestCase): with self.assertNumQueries(1): cache.delete_many(['a', 'b', 'c']) + def test_cull_count_queries(self): + old_max_entries = cache._max_entries + # Force _cull to delete on first cached record. + cache._max_entries = -1 + with CaptureQueriesContext(connection) as captured_queries: + try: + cache.set('force_cull', 'value', 1000) + finally: + cache._max_entries = old_max_entries + num_count_queries = sum('COUNT' in query['sql'] for query in captured_queries) + self.assertEqual(num_count_queries, 1) + def test_delete_cursor_rowcount(self): """ The rowcount attribute should not be checked on a closed cursor. -- cgit v1.3