summaryrefslogtreecommitdiff
path: root/testing/tests/benchmarks
diff options
context:
space:
mode:
authordrebs <drebs@leap.se>2017-03-11 14:38:51 +0100
committerdrebs <drebs@leap.se>2017-03-11 14:38:51 +0100
commit3ec21a7a6b39b4fe8885f3050ab75402e6812a1f (patch)
tree300a2d8da67bbc7c6484f9ee136a4a18c41c48c6 /testing/tests/benchmarks
parentc379a58d84fbf061b8d046057e45089f0e3c65f6 (diff)
parent3eefcb7d138ef41932a748ae729bfa0b629758d2 (diff)
Merge tag '0.9.3' into debian/platform-0.9
0.9.3 Conflicts: server/pkg/soledad-server server/pkg/soledad-server.service
Diffstat (limited to 'testing/tests/benchmarks')
-rw-r--r--testing/tests/benchmarks/conftest.py18
-rw-r--r--testing/tests/benchmarks/test_sync.py16
2 files changed, 33 insertions, 1 deletions
diff --git a/testing/tests/benchmarks/conftest.py b/testing/tests/benchmarks/conftest.py
index a9cc3464..1b99d96e 100644
--- a/testing/tests/benchmarks/conftest.py
+++ b/testing/tests/benchmarks/conftest.py
@@ -12,12 +12,30 @@ from leap.common.events import server
server.ensure_server()
+#
+# pytest customizations
+#
+
def pytest_addoption(parser):
parser.addoption(
"--num-docs", type="int", default=100,
help="the number of documents to use in performance tests")
+# mark benchmark tests using their group names (thanks ionelmc! :)
+def pytest_collection_modifyitems(items):
+ for item in items:
+ bench = item.get_marker("benchmark")
+ if bench and bench.kwargs.get('group'):
+ group = bench.kwargs['group']
+ marker = getattr(pytest.mark, 'benchmark_' + group)
+ item.add_marker(marker)
+
+
+#
+# benchmark fixtures
+#
+
@pytest.fixture()
def payload():
def generate(size):
diff --git a/testing/tests/benchmarks/test_sync.py b/testing/tests/benchmarks/test_sync.py
index 1501d74b..fcfab998 100644
--- a/testing/tests/benchmarks/test_sync.py
+++ b/testing/tests/benchmarks/test_sync.py
@@ -11,6 +11,12 @@ def load_up(client, amount, payload):
yield gatherResults(deferreds)
+# Each test created with this function will:
+#
+# - get a fresh client.
+# - iterate:
+# - setup: create N docs of a certain size
+# - benchmark: sync() -- uploads N docs.
def create_upload(uploads, size):
@pytest.inlineCallbacks
@pytest.mark.benchmark(group="test_upload")
@@ -29,6 +35,14 @@ test_upload_100_100k = create_upload(100, 100 * 1000)
test_upload_1000_10k = create_upload(1000, 10 * 1000)
+# Each test created with this function will:
+#
+# - get a fresh client.
+# - create N docs of a certain size
+# - sync (uploads those docs)
+# - iterate:
+# - setup: get a fresh client with empty local db
+# - benchmark: sync() -- downloads N docs.
def create_download(downloads, size):
@pytest.inlineCallbacks
@pytest.mark.benchmark(group="test_download")
@@ -41,7 +55,7 @@ def create_download(downloads, size):
# ensures we are dealing with properly encrypted docs
def setup():
- return soledad_client()
+ return soledad_client(force_fresh_db=True)
def sync(clean_client):
return clean_client.sync()