diff options
author | Charles Gordon <charles.gordon@gmail.com> | 2015-10-23 15:01:01 -0700 |
---|---|---|
committer | Charles Gordon <charles.gordon@gmail.com> | 2015-10-23 15:01:01 -0700 |
commit | ff268208514171bcc6cec8a8cc54dcafa2f93fea (patch) | |
tree | 204d6b2e1e9b5c9ac2f0925a1e0a910cc524c0a2 | |
parent | 2ffe78d9ef574387ec0422b59f9fbc930069fe5d (diff) | |
parent | ce236adb59e058daac053f746994b415a22846fb (diff) | |
download | pymemcache-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.py | 19 | ||||
-rw-r--r-- | pymemcache/test/test_client.py | 10 |
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): |