#27124: caches_setting_for_tests passes cull related options to memcached tests --------------------------------------+-------------------- Reporter: edmorley | Owner: nobody Type: Cleanup/optimization | Status: new Component: Core (Cache system) | Version: master Severity: Normal | Keywords: Triage Stage: Unreviewed | Has patch: 0 Easy pickings: 0 | UI/UX: 0 --------------------------------------+-------------------- The cache tests have a helper named `caches_setting_for_tests()` ([https://github.com/django/django/blob/989f6108d349e0eebdc5ad26b5cb4e882cb32e47/tests/cache/tests.py#L242-L253 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 ([https://docs.djangoproject.com/en/1.9/topics/cache/#cache-arguments 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 ([https://github.com/django/django/blob/989f6108d349e0eebdc5ad26b5cb4e882cb32e47/tests/cache/tests.py#L237-L238 source]) were included. This parameter would default to `True`, but then be set to `False` in `MemcachedCacheTests`. Thoughts? Many thanks :-) -- Ticket URL: <https://code.djangoproject.com/ticket/27124> Django <https://code.djangoproject.com/> The Web framework for perfectionists with deadlines. -- You received this message because you are subscribed to the Google Groups "Django updates" group. To unsubscribe from this group and stop receiving emails from it, send an email to django-updates+unsubscr...@googlegroups.com. To post to this group, send email to django-updates@googlegroups.com. To view this discussion on the web visit https://groups.google.com/d/msgid/django-updates/051.f9eeec62b0b929c74633a73daac6a0d2%40djangoproject.com. For more options, visit https://groups.google.com/d/optout.