''' 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_with_setup, payload): """ Create many documents of a given size concurrently. """ client = soledad_client() yield txbenchmark_with_setup( lambda: None, 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): """ Create many documents of a given size serially. """ client = soledad_client()._dbsyncer monitored_benchmark( load_up, client, amount, payload(size), defer=False) return test test_async_create_10_1000k = build_test_sqlcipher_async_create(10, 1000 * 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_10_1000k = build_test_sqlcipher_create(10, 1000 * 1000) test_create_100_100k = build_test_sqlcipher_create(100, 100 * 1000) test_create_1000_10k = build_test_sqlcipher_create(1000, 10 * 1000)