#27124 closed Cleanup/optimization (fixed)
caches_setting_for_tests passes cull related options to memcached tests
| Reported by: | Ed Morley | Owned by: | Ed Morley |
|---|---|---|---|
| Component: | Core (Cache system) | Version: | dev |
| Severity: | Normal | Keywords: | |
| Cc: | Triage Stage: | Accepted | |
| Has patch: | yes | Needs documentation: | no |
| Needs tests: | no | Patch needs improvement: | no |
| Easy pickings: | no | UI/UX: | no |
Description
The cache tests have a helper named caches_setting_for_tests() (source), that generates the config that is used to override CACHES at various points during the test run.
However it uses _caches_setting_base, which contains cache OPTIONS such as MAX_ENTRIES and CULL_FREQUENCY that are only relevant to the locmem, filesystem and database backends (docs).
This is problematic, since in #20892 we're going to start passing the contents of OPTIONS verbatim to the memcache client constructors, which causes the tests to fail like so:
ERROR: test_memcached_uses_highest_pickle_version (cache.tests.MemcachedCacheTests)
----------------------------------------------------------------------
Traceback (most recent call last):
File "/home/vagrant/src/_todo/django/tests/cache/tests.py", line 1198, in test_memcached_uses_highest_pickle_version
self.assertEqual(caches[cache_key]._cache.pickleProtocol,
File "/home/vagrant/src/_todo/django/django/core/cache/backends/memcached.py", line 169, in _cache
self._client = self._lib.Client(self._servers, **client_kwargs)
TypeError: __init__() got an unexpected keyword argument 'MAX_ENTRIES'
As such, the cache tests need to be adjusted to only pass those options to the backends that support them.
One way of doing this might be for caches_setting_for_tests() to take an additional include_cull_settings bool parameter, which would determine whether the problematic cull and zero_cull cache keys (source) were included. This parameter would default to True, but then be set to False in MemcachedCacheTests.
Thoughts?
Many thanks :-)
Change History (4)
comment:1 by , 9 years ago
| Triage Stage: | Unreviewed → Accepted |
|---|
comment:2 by , 9 years ago
| Has patch: | set |
|---|---|
| Owner: | changed from to |
| Status: | new → assigned |
PR opened. I decided to go with a new argument named
excludeinstead, which takes a tuple of test cache key names that will be excluded from the generated cache settings.