summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJohn Anderson <sontek@gmail.com>2015-07-16 09:50:54 -0700
committerJohn Anderson <sontek@gmail.com>2015-07-16 09:50:54 -0700
commit6ef4ab0f455eea7c53c67368c18b3a0d92c9001d (patch)
tree43e15f338c2569be899119167a3d1a8af2dbd75f
parent75bba314e8a084c40a806f6e6c13906aaa3f96e5 (diff)
parent21e1bda51cf0473108c35a03df8b265aa40e3d4b (diff)
downloadpymemcache-6ef4ab0f455eea7c53c67368c18b3a0d92c9001d.tar.gz
Merge branch 'master' of github.com:pinterest/pymemcache into add_hashing_client
Conflicts: docs/apidoc/pymemcache.test.rst
-rw-r--r--docs/apidoc/pymemcache.test.rst20
-rw-r--r--pymemcache/test/benchmark.py96
-rw-r--r--pymemcache/test/conftest.py18
-rw-r--r--pymemcache/test/test_benchmark.py77
-rw-r--r--setup.cfg1
5 files changed, 102 insertions, 110 deletions
diff --git a/docs/apidoc/pymemcache.test.rst b/docs/apidoc/pymemcache.test.rst
index 4cf6ba1..8b1e17b 100644
--- a/docs/apidoc/pymemcache.test.rst
+++ b/docs/apidoc/pymemcache.test.rst
@@ -4,14 +4,6 @@ pymemcache.test package
Submodules
----------
-pymemcache.test.benchmark module
---------------------------------
-
-.. automodule:: pymemcache.test.benchmark
- :members:
- :undoc-members:
- :show-inheritance:
-
pymemcache.test.conftest module
-------------------------------
@@ -20,18 +12,18 @@ pymemcache.test.conftest module
:undoc-members:
:show-inheritance:
-pymemcache.test.test_client module
-----------------------------------
+pymemcache.test.test_benchmark module
+-------------------------------------
-.. automodule:: pymemcache.test.test_client
+.. automodule:: pymemcache.test.test_benchmark
:members:
:undoc-members:
:show-inheritance:
-pymemcache.test.test_client_hash module
----------------------------------------
+pymemcache.test.test_client module
+----------------------------------
-.. automodule:: pymemcache.test.test_client_hash
+.. automodule:: pymemcache.test.test_client
:members:
:undoc-members:
:show-inheritance:
diff --git a/pymemcache/test/benchmark.py b/pymemcache/test/benchmark.py
deleted file mode 100644
index 2fbda51..0000000
--- a/pymemcache/test/benchmark.py
+++ /dev/null
@@ -1,96 +0,0 @@
-# Copyright 2012 Pinterest.com
-#
-# Licensed under the Apache License, Version 2.0 (the "License");
-# you may not use this file except in compliance with the License.
-# You may obtain a copy of the License at
-#
-# http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-# See the License for the specific language governing permissions and
-# limitations under the License.
-
-import argparse
-import time
-
-
-def test_client(name, client, size, count):
- client.flush_all()
-
- value = 'X' * size
-
- start = time.time()
-
- for i in range(count):
- client.set(str(i), value)
-
- for i in range(count):
- client.get(str(i))
-
- duration = time.time() - start
- print("{0}: {1}".format(name, duration))
-
-
-def test_pylibmc(host, port, size, count):
- try:
- import pylibmc
- except Exception:
- print("Could not import pylibmc, skipping test...")
- return
-
- client = pylibmc.Client(['{0}:{1}'.format(host, port)])
- client.behaviors = {"tcp_nodelay": True}
- test_client('pylibmc', client, size, count)
-
-
-def test_memcache(host, port, size, count):
- try:
- import memcache
- except Exception:
- print("Could not import pymemcache.client, skipping test...")
- return
-
- client = memcache.Client(['{0}:{1}'.format(host, port)])
- test_client('memcache', client, size, count)
-
-
-def test_pymemcache(host, port, size, count):
- try:
- import pymemcache.client
- except Exception:
- print("Could not import pymemcache.client, skipping test...")
- return
-
- client = pymemcache.client.Client((host, port))
- test_client('pymemcache', client, size, count)
-
-
-def main():
- parser = argparse.ArgumentParser()
- parser.add_argument('-s', '--server',
- metavar='HOST',
- required=True)
- parser.add_argument('-p', '--port',
- metavar='PORT',
- type=int,
- required=True)
- parser.add_argument('-z', '--size',
- metavar='SIZE',
- default=1024,
- type=int)
- parser.add_argument('-c', '--count',
- metavar='COUNT',
- default=10000,
- type=int)
-
- args = parser.parse_args()
-
- test_pylibmc(args.server, args.port, args.size, args.count)
- test_memcache(args.server, args.port, args.size, args.count)
- test_pymemcache(args.server, args.port, args.size, args.count)
-
-
-if __name__ == '__main__':
- main()
diff --git a/pymemcache/test/conftest.py b/pymemcache/test/conftest.py
index 3f45d75..9928a22 100644
--- a/pymemcache/test/conftest.py
+++ b/pymemcache/test/conftest.py
@@ -11,6 +11,14 @@ def pytest_addoption(parser):
default='11211',
help='memcached server port')
+ parser.addoption('--size', action='store',
+ default=1024,
+ help='size of data in benchmarks')
+
+ parser.addoption('--count', action='store',
+ default=10000,
+ help='amount of values to use in benchmarks')
+
@pytest.fixture(scope='session')
def host(request):
@@ -22,6 +30,16 @@ def port(request):
return int(request.config.option.port)
+@pytest.fixture(scope='session')
+def size(request):
+ return int(request.config.option.size)
+
+
+@pytest.fixture(scope='session')
+def count(request):
+ return int(request.config.option.count)
+
+
def pytest_generate_tests(metafunc):
if 'socket_module' in metafunc.fixturenames:
socket_modules = [socket]
diff --git a/pymemcache/test/test_benchmark.py b/pymemcache/test/test_benchmark.py
new file mode 100644
index 0000000..39357cf
--- /dev/null
+++ b/pymemcache/test/test_benchmark.py
@@ -0,0 +1,77 @@
+# Copyright 2012 Pinterest.com
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+# http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+# See the License for the specific language governing permissions and
+# limitations under the License.
+
+import time
+import pytest
+
+try:
+ import pylibmc
+ HAS_PYLIBMC = True
+except Exception:
+ HAS_PYLIBMC = False
+
+try:
+ import memcache
+ HAS_MEMCACHE = True
+except Exception:
+ HAS_MEMCACHE = False
+
+
+try:
+ import pymemcache.client
+ HAS_PYMEMCACHE = True
+except Exception:
+ HAS_PYMEMCACHE = False
+
+
+def run_client_test(name, client, size, count):
+ client.flush_all()
+
+ value = 'X' * size
+
+ start = time.time()
+
+ for i in range(count):
+ client.set(str(i), value)
+
+ for i in range(count):
+ client.get(str(i))
+
+ duration = time.time() - start
+ print("{0}: {1}".format(name, duration))
+
+
+@pytest.mark.benchmark()
+@pytest.mark.skipif(not HAS_PYLIBMC,
+ reason="requires pylibmc")
+def test_pylibmc(host, port, size, count):
+ client = pylibmc.Client(['{0}:{1}'.format(host, port)])
+ client.behaviors = {"tcp_nodelay": True}
+ run_client_test('pylibmc', client, size, count)
+
+
+@pytest.mark.benchmark()
+@pytest.mark.skipif(not HAS_MEMCACHE,
+ reason="requires python-memcached")
+def test_memcache(host, port, size, count):
+ client = memcache.Client(['{0}:{1}'.format(host, port)])
+ run_client_test('memcache', client, size, count)
+
+
+@pytest.mark.benchmark()
+@pytest.mark.skipif(not HAS_PYMEMCACHE,
+ reason="requires pymemcache")
+def test_pymemcache(host, port, size, count):
+ client = pymemcache.client.Client((host, port))
+ run_client_test('pymemcache', client, size, count)
diff --git a/setup.cfg b/setup.cfg
index 3d3ac4e..fe3e1c5 100644
--- a/setup.cfg
+++ b/setup.cfg
@@ -16,6 +16,7 @@ addopts =
markers =
unit
integration
+ benchmark
[flake8]
show-source = True