diff options
author | Hervé Beraud <herveberaud.pro@gmail.com> | 2021-07-15 14:42:22 +0200 |
---|---|---|
committer | Mike Bayer <mike_mp@zzzcomputing.com> | 2021-08-30 11:47:03 -0400 |
commit | 36390997c6350a606c7cabe4ea85dd05f4bddd52 (patch) | |
tree | eb31206cde488355b0fd29565dc208c5930d776c /tests | |
parent | 46d8bf158be59fa5bb8cfe26ef145117e15816bc (diff) | |
download | dogpile-cache-36390997c6350a606c7cabe4ea85dd05f4bddd52.tar.gz |
Allow using pymemcache's socket keepalive and retry mechanisms
Socket keepalive capabilities have been introduced [1][2][3] with pymemcache
3.5.0 [4][5]. These changes allow to pass keepalive configuration to the
pymemcache client.
Retry mechanisms have been implemented [6][7] with pymemcache 3.5.0 [5][8].
These changes allow to instantiate a ``RetryingClient`` by using
dogpile.cache.
[1] https://github.com/pinterest/pymemcache/commit/b289c87bb89b3ab477bd5d92c8951ab42c923923
[2] https://github.com/pinterest/pymemcache/commit/c782de1cac7cfaf4f6868d17682197022dad2d6b
[3] https://github.com/pinterest/pymemcache/commit/4d46f5ad8ddbd860e5219965df0714bdc15062f6
[4] https://github.com/pinterest/pymemcache/commit/07b5ecc21ce5d388d4312c943d79f813311e349f
[5] https://pypi.org/project/pymemcache/3.5.0/
[6] https://github.com/pinterest/pymemcache/commit/75fe5c81c35d2bcfc8e6a697aef948efbfebe8ba
[7] https://pymemcache.readthedocs.io/en/latest/getting_started.html#using-the-built-in-retrying-mechanism
[8] https://github.com/pinterest/pymemcache/commit/07b5ecc21ce5d388d4312c943d79f813311e349f
Closes: #205
Pull-request: https://github.com/sqlalchemy/dogpile.cache/pull/205
Pull-request-sha: 8a7ea5dfb0653b675f2ce9eb4873d8bf08841028
Change-Id: Ia2e76475943bc8ec86b5974217d1c92110be5b43
Diffstat (limited to 'tests')
-rw-r--r-- | tests/cache/test_memcached_backend.py | 27 |
1 files changed, 27 insertions, 0 deletions
diff --git a/tests/cache/test_memcached_backend.py b/tests/cache/test_memcached_backend.py index bac7445..407502a 100644 --- a/tests/cache/test_memcached_backend.py +++ b/tests/cache/test_memcached_backend.py @@ -2,11 +2,13 @@ import os import ssl from threading import Thread import time +from unittest import mock from unittest import TestCase import weakref import pytest +from dogpile.cache import make_region from dogpile.cache.backends.memcached import GenericMemcachedBackend from dogpile.cache.backends.memcached import MemcachedBackend from dogpile.cache.backends.memcached import PylibmcBackend @@ -200,6 +202,17 @@ class PyMemcacheSerializerTest( backend = "dogpile.cache.pymemcache" +class PyMemcacheRetryTest(_NonDistributedMemcachedTest): + backend = "dogpile.cache.pymemcache" + config_args = { + "arguments": { + "url": MEMCACHED_URL, + "enable_retry_client": True, + "retry_attempts": 3, + } + } + + class MemcachedTest(_NonDistributedMemcachedTest): backend = "dogpile.cache.memcached" @@ -327,6 +340,20 @@ class MemcachedArgstest(TestCase): backend.set("foo", "bar") eq_(backend._clients.memcached.canary, [{"min_compress_len": 20}]) + def test_pymemcache_enable_retry_client_not_set(self): + with mock.patch("warnings.warn") as warn_mock: + _ = make_region().configure( + "dogpile.cache.pymemcache", + arguments={"url": "foo", "retry_attempts": 2}, + ) + eq_( + warn_mock.mock_calls[0], + mock.call( + "enable_retry_client is not set; retry options " + "will be ignored" + ), + ) + class LocalThreadTest(TestCase): def setUp(self): |