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.
* needs_better_patch: => 0
* needs_docs: => 0
* needs_tests: => 0
* stage: Unreviewed => Accepted
--
Ticket URL: <https://code.djangoproject.com/ticket/27124#comment:1>
* owner: nobody => edmorley
* status: new => assigned
* has_patch: 0 => 1
Comment:
PR opened. I decided to go with a new argument named `exclude` instead,
which takes a tuple of test cache key names that will be excluded from the
generated cache settings.
--
Ticket URL: <https://code.djangoproject.com/ticket/27124#comment:2>
* status: assigned => closed
* resolution: => fixed
Comment:
In [changeset:"606a303856afee684563f9349c2a55578854f1ba" 606a303]:
{{{
#!CommitTicketReference repository=""
revision="606a303856afee684563f9349c2a55578854f1ba"
Fixed #27124 -- Excluded cull-related cache configs from memcached tests.
Since the `cull` and `zero_cull` test cache configs set `MAX_ENTRIES`
and `CULL_FREQUENCY` in `OPTIONS`, which are only intended for use with
the locmem, filesystem, and database backends. This prevents test
failures once refs #20892 is fixed.
}}}
--
Ticket URL: <https://code.djangoproject.com/ticket/27124#comment:3>
Comment (by Tim Graham <timograham@…>):
In [changeset:"fb8eea5680f20d3df50eb6a7d972645a388cb196" fb8eea56]:
{{{
#!CommitTicketReference repository=""
revision="fb8eea5680f20d3df50eb6a7d972645a388cb196"
[1.10.x] Fixed #27124 -- Excluded cull-related cache configs from
memcached tests.
Since the `cull` and `zero_cull` test cache configs set `MAX_ENTRIES`
and `CULL_FREQUENCY` in `OPTIONS`, which are only intended for use with
the locmem, filesystem, and database backends. This prevents test
failures once refs #20892 is fixed.
Backport of 606a303856afee684563f9349c2a55578854f1ba from master
}}}
--
Ticket URL: <https://code.djangoproject.com/ticket/27124#comment:4>