summaryrefslogtreecommitdiff
path: root/scripts/profiling
diff options
context:
space:
mode:
Diffstat (limited to 'scripts/profiling')
-rwxr-xr-xscripts/profiling/backends_cpu_usage/test_u1db_sync.py21
-rwxr-xr-xscripts/profiling/sync/profile-sync.py49
2 files changed, 51 insertions, 19 deletions
diff --git a/scripts/profiling/backends_cpu_usage/test_u1db_sync.py b/scripts/profiling/backends_cpu_usage/test_u1db_sync.py
index 26ef8f9f..5ae68c81 100755
--- a/scripts/profiling/backends_cpu_usage/test_u1db_sync.py
+++ b/scripts/profiling/backends_cpu_usage/test_u1db_sync.py
@@ -1,18 +1,16 @@
#!/usr/bin/python
-import u1db
import tempfile
import logging
import shutil
import os
-import argparse
import time
import binascii
-import random
-
+from leap.soledad.common import l2db
from leap.soledad.client.sqlcipher import open as sqlcipher_open
+
from log_cpu_usage import LogCpuUsage
from u1dblite import open as u1dblite_open
from u1dbcipher import open as u1dbcipher_open
@@ -24,10 +22,10 @@ BIGGEST_DOC_SIZE = 100 * 1024 # 100 KB
def get_data(size):
- return binascii.hexlify(os.urandom(size/2))
+ return binascii.hexlify(os.urandom(size / 2))
-def run_test(testname, open_fun, tempdir, docs, *args):
+def run_test(testname, open_fun, tempdir, docs, *args):
logger.info('Starting test \"%s\".' % testname)
# instantiate dbs
@@ -36,8 +34,7 @@ def run_test(testname, open_fun, tempdir, docs, *args):
# get sync target and synchsonizer
target = db2.get_sync_target()
- synchronizer = u1db.sync.Synchronizer(db1, target)
-
+ synchronizer = l2db.sync.Synchronizer(db1, target)
# generate lots of small documents
logger.info('Creating %d documents in source db...' % DOCS_TO_SYNC)
@@ -80,30 +77,28 @@ def run_test(testname, open_fun, tempdir, docs, *args):
if __name__ == '__main__':
-
+
# configure logger
logger = logging.getLogger(__name__)
LOG_FORMAT = '%(asctime)s %(message)s'
logging.basicConfig(format=LOG_FORMAT, level=logging.INFO)
-
# get a temporary dir
tempdir = tempfile.mkdtemp()
logger.info('Using temporary directory %s' % tempdir)
-
# create a lot of documents with random sizes
docs = []
for i in xrange(DOCS_TO_SYNC):
docs.append({
'index': i,
- #'data': get_data(
+ # 'data': get_data(
# random.randrange(
# SMALLEST_DOC_SIZE, BIGGEST_DOC_SIZE))
})
# run tests
- run_test('sqlite', u1db.open, tempdir, docs, True)
+ run_test('sqlite', l2db.open, tempdir, docs, True)
run_test('sqlcipher', sqlcipher_open, tempdir, docs, '123456', True)
run_test('u1dblite', u1dblite_open, tempdir, docs)
run_test('u1dbcipher', u1dbcipher_open, tempdir, docs, '123456', True)
diff --git a/scripts/profiling/sync/profile-sync.py b/scripts/profiling/sync/profile-sync.py
index 8c18bde8..34e66f03 100755
--- a/scripts/profiling/sync/profile-sync.py
+++ b/scripts/profiling/sync/profile-sync.py
@@ -1,4 +1,10 @@
#!/usr/bin/env python
+"""
+Example of usage:
+ time ./profile-sync.py --no-stats --send-num 5 --payload-file sample \
+ --repeat-payload -p password -b /tmp/foobarsync \
+ test_soledad_sync_001@cdev.bitmask.net
+"""
import argparse
import commands
@@ -13,7 +19,9 @@ from twisted.internet import reactor
from util import StatsLogger, ValidateUserHandle
from client_side_db import _get_soledad_instance, _get_soledad_info
+
from leap.common.events import flags
+from leap.soledad.client.api import Soledad
flags.set_events_enabled(False)
@@ -70,6 +78,23 @@ def create_docs(soledad, args):
payload = fmap.read(docsize * 1024)
s.create_doc({payload: payload})
+
+def _get_soledad_instance_from_uuid(uuid, passphrase, basedir, server_url,
+ cert_file, token):
+ secrets_path = os.path.join(basedir, '%s.secret' % uuid)
+ local_db_path = os.path.join(basedir, '%s.db' % uuid)
+ return Soledad(
+ uuid,
+ unicode(passphrase),
+ secrets_path=secrets_path,
+ local_db_path=local_db_path,
+ server_url=server_url,
+ cert_file=cert_file,
+ auth_token=token,
+ defer_encryption=True,
+ syncable=True)
+
+
# main program
if __name__ == '__main__':
@@ -79,6 +104,9 @@ if __name__ == '__main__':
parser.add_argument(
'user@provider', action=ValidateUserHandle, help='the user handle')
parser.add_argument(
+ '-u', dest='uuid', required=False, default=None,
+ help='uuid for local tests')
+ parser.add_argument(
'-b', dest='basedir', required=False, default=None,
help='soledad base directory')
parser.add_argument(
@@ -102,6 +130,7 @@ if __name__ == '__main__':
parser.add_argument(
'--payload-file', dest="payload_f", default=None,
help='path to a sample file to use for the payloads')
+
parser.add_argument(
'--no-stats', dest='do_stats', action='store_false',
help='skip system stats')
@@ -132,12 +161,20 @@ if __name__ == '__main__':
basedir = tempfile.mkdtemp()
logger.info('Using %s as base directory.' % basedir)
- uuid, server_url, cert_file, token = \
- _get_soledad_info(
- args.username, args.provider, passphrase, basedir)
- # get the soledad instance
- s = _get_soledad_instance(
- uuid, passphrase, basedir, server_url, cert_file, token)
+ if args.uuid:
+ # We got an uuid. This is a local test, and we bypass
+ # authentication and encryption.
+ s = _get_soledad_instance_from_uuid(
+ args.uuid, passphrase, basedir, 'http://localhost:2323', '', '')
+
+ else:
+ # Remote server. First, get remote info...
+ uuid, server_url, cert_file, token = \
+ _get_soledad_info(
+ args.username, args.provider, passphrase, basedir)
+ # ...and then get the soledad instance
+ s = _get_soledad_instance(
+ uuid, passphrase, basedir, server_url, cert_file, token)
if args.do_send:
create_docs(s, args)