summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorAdam Chainz <adam@adamj.eu>2015-07-24 13:18:07 +0100
committerAdam Chainz <adam@adamj.eu>2015-07-24 13:19:18 +0100
commit3f97e1565927a873d8eec9b4ab725ac2335f5bea (patch)
treed852c6feab313ff8669344bd45f83c29699c65f3
parentb21b04885591341008be963eab25f5338fd3820f (diff)
downloadpymemcache-3f97e1565927a873d8eec9b4ab725ac2335f5bea.tar.gz
Test the delete_many method and add it to Client classes that are missing it
-rw-r--r--pymemcache/client/hash.py5
-rw-r--r--pymemcache/test/test_client.py26
-rw-r--r--pymemcache/test/utils.py5
3 files changed, 36 insertions, 0 deletions
diff --git a/pymemcache/client/hash.py b/pymemcache/client/hash.py
index 9c3e68e..5c3928d 100644
--- a/pymemcache/client/hash.py
+++ b/pymemcache/client/hash.py
@@ -296,6 +296,11 @@ class HashClient(object):
def delete(self, key, *args, **kwargs):
return self._run_cmd('delete', key, False, *args, **kwargs)
+ def delete_many(self, keys, *args, **kwargs):
+ for key in keys:
+ self._run_cmd('delete', key, False, *args, **kwargs)
+ return True
+
def cas(self, key, *args, **kwargs):
return self._run_cmd('cas', key, False, *args, **kwargs)
diff --git a/pymemcache/test/test_client.py b/pymemcache/test/test_client.py
index aa9c8b8..9d1cdf6 100644
--- a/pymemcache/test/test_client.py
+++ b/pymemcache/test/test_client.py
@@ -199,6 +199,32 @@ class ClientTestMixin(object):
result = client.delete(b'key', noreply=True)
assert result is True
+ def test_delete_many_no_keys(self):
+ client = self.make_client([])
+ result = client.delete_many([], noreply=False)
+ assert result is True
+
+ def test_delete_many_none_found(self):
+ client = self.make_client([b'NOT_FOUND\r\n'])
+ result = client.delete_many([b'key'], noreply=False)
+ assert result is True
+
+ def test_delete_many_found(self):
+ client = self.make_client([b'STORED\r', b'\n', b'DELETED\r\n'])
+ result = client.add(b'key', b'value', noreply=False)
+ result = client.delete_many([b'key'], noreply=False)
+ assert result is True
+
+ def test_delete_many_some_found(self):
+ client = self.make_client([
+ b'STORED\r\n',
+ b'DELETED\r\n',
+ b'NOT_FOUND\r\n'
+ ])
+ result = client.add(b'key', b'value', noreply=False)
+ result = client.delete_many([b'key', b'key2'], noreply=False)
+ assert result is True
+
def test_incr_not_found(self):
client = self.make_client([b'NOT_FOUND\r\n'])
result = client.incr(b'key', 1, noreply=False)
diff --git a/pymemcache/test/utils.py b/pymemcache/test/utils.py
index fa60f4d..66d0ece 100644
--- a/pymemcache/test/utils.py
+++ b/pymemcache/test/utils.py
@@ -115,6 +115,11 @@ class MockMemcacheClient(object):
present = current is not None
return noreply or present
+ def delete_many(self, keys, noreply=True):
+ for key in keys:
+ self.delete(key, noreply)
+ return True
+
def stats(self):
# I make no claim that these values make any sense, but the format
# of the output is the same as for pymemcache.client.Client.stats()