summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorCharles Gordon <charles.gordon@gmail.com>2015-10-23 15:01:01 -0700
committerCharles Gordon <charles.gordon@gmail.com>2015-10-23 15:01:01 -0700
commitff268208514171bcc6cec8a8cc54dcafa2f93fea (patch)
tree204d6b2e1e9b5c9ac2f0925a1e0a910cc524c0a2
parent2ffe78d9ef574387ec0422b59f9fbc930069fe5d (diff)
parentce236adb59e058daac053f746994b415a22846fb (diff)
downloadpymemcache-ff268208514171bcc6cec8a8cc54dcafa2f93fea.tar.gz
Merge pull request #90 from starstable/feature-version-cmd
Implemented VERSION command in Client and PooledClient
-rw-r--r--pymemcache/client/base.py19
-rw-r--r--pymemcache/test/test_client.py10
2 files changed, 29 insertions, 0 deletions
diff --git a/pymemcache/client/base.py b/pymemcache/client/base.py
index 844213b..4eab540 100644
--- a/pymemcache/client/base.py
+++ b/pymemcache/client/base.py
@@ -598,6 +598,21 @@ class Client(object):
return result
+ def version(self):
+ """
+ The memcached "version" command.
+
+ Returns:
+ A string of the memcached version.
+ """
+ cmd = b"version\r\n"
+ result = self._misc_cmd(cmd, b'version', False)
+
+ if not result.startswith(b'VERSION '):
+ raise MemcacheUnknownError("Received unexpected response: %s" % (result, ))
+
+ return result[8:]
+
def flush_all(self, delay=0, noreply=None):
"""
The memcached "flush_all" command.
@@ -949,6 +964,10 @@ class PooledClient(object):
else:
raise
+ def version(self):
+ with self.client_pool.get_and_release(destroy_on_fail=True) as client:
+ return client.version()
+
def flush_all(self, delay=0, noreply=True):
with self.client_pool.get_and_release(destroy_on_fail=True) as client:
return client.flush_all(delay=delay, noreply=noreply)
diff --git a/pymemcache/test/test_client.py b/pymemcache/test/test_client.py
index 7fe08a0..c142e6a 100644
--- a/pymemcache/test/test_client.py
+++ b/pymemcache/test/test_client.py
@@ -652,6 +652,16 @@ class TestClient(ClientTestMixin, unittest.TestCase):
result = client.flush_all()
assert result is True
+ def test_version_success(self):
+ client = self.make_client([b'VERSION 1.2.3\r\n'], default_noreply=False)
+ result = client.version()
+ assert result == b'1.2.3'
+
+ def test_version_exception(self):
+ client = self.make_client([b'INVALID DATA\r\n'], default_noreply=False)
+ with pytest.raises(MemcacheUnknownError):
+ result = client.version()
+
@pytest.mark.unit()
class TestClientSocketConnect(unittest.TestCase):