diff options
author | Adam Chainz <adam@adamj.eu> | 2015-07-24 13:18:07 +0100 |
---|---|---|
committer | Adam Chainz <adam@adamj.eu> | 2015-07-24 13:19:18 +0100 |
commit | 3f97e1565927a873d8eec9b4ab725ac2335f5bea (patch) | |
tree | d852c6feab313ff8669344bd45f83c29699c65f3 | |
parent | b21b04885591341008be963eab25f5338fd3820f (diff) | |
download | pymemcache-3f97e1565927a873d8eec9b4ab725ac2335f5bea.tar.gz |
Test the delete_many method and add it to Client classes that are missing it
-rw-r--r-- | pymemcache/client/hash.py | 5 | ||||
-rw-r--r-- | pymemcache/test/test_client.py | 26 | ||||
-rw-r--r-- | pymemcache/test/utils.py | 5 |
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() |