diff options
Diffstat (limited to 'scripts/soledad_sync.py')
-rw-r--r-- | scripts/soledad_sync.py | 96 |
1 files changed, 96 insertions, 0 deletions
diff --git a/scripts/soledad_sync.py b/scripts/soledad_sync.py new file mode 100644 index 0000000..8c6442f --- /dev/null +++ b/scripts/soledad_sync.py @@ -0,0 +1,96 @@ +import os +import json +from ConfigParser import ConfigParser +from leap.soledad.client.api import Soledad +from twisted.internet import defer, reactor +from twisted.internet.task import deferLater + + +# get configs from file +parser = ConfigParser() +parser.read('defaults.conf') + +HOST = parser.get('server', 'host') + +UUID = parser.get('client', 'uuid') +CLIENT_BASEDIR = parser.get('client', 'basedir') +PASSPHRASE = parser.get('client', 'passphrase') + +NUM_DOCS = int(parser.get('sync', 'num_docs')) +PAYLOAD = parser.get('sync', 'payload') +AUTH_TOKEN = parser.get('sync', 'auth_token') + +STATS_FILE = parser.get('test', 'stats_file') + + +DO_THESEUS = os.environ.get('THESEUS', False) + + +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) + + +def _get_soledad_instance(): + return _get_soledad_instance_from_uuid( + UUID, PASSPHRASE, CLIENT_BASEDIR, HOST, '', AUTH_TOKEN) + +s = _get_soledad_instance() + + +def create_docs(): + global s + # get content for docs + payload = 'a' * 10 + if os.path.isfile(PAYLOAD): + with open(PAYLOAD, 'r') as f: + payload = f.read() + + # create docs + cd = [] + for i in range(NUM_DOCS): + cd.append(s.create_doc({'payload': payload})) + d = defer.gatherResults(cd) + + d.addCallback(lambda _: s.get_all_docs()) + d.addCallback(lambda result: "%d docs created, %d docs on db" % (NUM_DOCS, result[0])) + #d.addCallback(lambda _: s.close()) + + return d + + +def start_sync(): + global s + + if DO_THESEUS: + from theseus import Tracer + t = Tracer() + t.install() + + def stop_tracing(_): + if DO_THESEUS: + with open('callgrind.theseus', 'wb') as outfile: + t.write_data(outfile) + print "STOPPED TRACING, DUMPED IN CALLGRIND.THESEUS<<<<" + + cd = [] + + d = s.sync() + d.addCallback(stop_tracing) + + return d + +def stats(): + global s + return s.sync_stats() |