summaryrefslogtreecommitdiff
path: root/testing/tests/benchmarks/test_sqlcipher.py
blob: 762c850fbe5c98e24a6a9f4d4a3cb90c77378ee7 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
'''
Tests SoledadClient/SQLCipher interaction
'''
import pytest

from twisted.internet.defer import gatherResults


def load_up(client, amount, payload, defer=True):
    results = [client.create_doc({'content': payload}) for _ in xrange(amount)]
    if defer:
        return gatherResults(results)


def build_test_sqlcipher_async_create(amount, size):
    @pytest.inlineCallbacks
    @pytest.mark.benchmark(group="test_sqlcipher_async_create")
    def test(soledad_client, txbenchmark, payload):
        client = soledad_client()
        yield txbenchmark(load_up, client, amount, payload(size))
    return test


def build_test_sqlcipher_create(amount, size):
    @pytest.mark.skip(reason="this test is lengthy and not a real use case")
    @pytest.mark.benchmark(group="test_sqlcipher_create")
    def test(soledad_client, monitored_benchmark, payload):
        client = soledad_client()._dbsyncer
        monitored_benchmark(
            load_up, client, amount, payload(size), defer=False)
    return test


test_async_create_20_500k = build_test_sqlcipher_async_create(20, 500 * 1000)
test_async_create_100_100k = build_test_sqlcipher_async_create(100, 100 * 1000)
test_async_create_1000_10k = build_test_sqlcipher_async_create(1000, 10 * 1000)
# synchronous
test_create_20_500k = build_test_sqlcipher_create(20, 500 * 1000)
test_create_100_100k = build_test_sqlcipher_create(100, 100 * 1000)
test_create_1000_10k = build_test_sqlcipher_create(1000, 10 * 1000)