154ecfd5d5e95a61ef5d0c13f3bae70dad03a8a3
[soledad-perf.git] / soledad_sync.py
1 import os
2 from leap.soledad.client.api import Soledad
3 from twisted.internet import defer
4
5 # EDIT THIS TO MATCH YOUR TEST ENVIRONMENT -------------
6 UUID = 'deadbeef10'
7 # HOST = 'http://futeisha:2323'
8 HOST = 'http://localhost:2323'
9 # NUM_DOCS = 100
10 NUM_DOCS = 50
11 PAYLOAD = '/tmp/payload'
12 # ------------------------------------------------------
13
14
15
16 DO_THESEUS = os.environ.get('THESEUS', False)
17
18
19 def _get_soledad_instance_from_uuid(uuid, passphrase, basedir, server_url,
20                                     cert_file, token):
21     secrets_path = os.path.join(basedir, '%s.secret' % uuid)
22     local_db_path = os.path.join(basedir, '%s.db' % uuid)
23     return Soledad(
24         uuid,
25         unicode(passphrase),
26         secrets_path=secrets_path,
27         local_db_path=local_db_path,
28         server_url=server_url,
29         cert_file=cert_file,
30         auth_token=token,
31         defer_encryption=True,
32         syncable=True)
33
34
35 def onSyncDone(result):
36     print "SYNC DONE!", result
37
38
39 def upload_soledad_stuff():
40
41     with open(PAYLOAD, 'r') as f:
42         payload = f.read()
43
44     if DO_THESEUS:
45         from theseus import Tracer
46         t = Tracer()
47         t.install()
48
49     s = _get_soledad_instance_from_uuid(
50         UUID, 'pass', '/tmp/soledadsync', HOST, '', '')
51
52     def do_sync(_):
53         d = s.sync()
54         d.addCallback(onSyncDone)
55         return d
56
57     def stop_tracing(_):
58         if DO_THESEUS:
59             with open('callgrind.theseus', 'wb') as outfile:
60                 t.write_data(outfile)
61             print "STOPPED TRACING, DUMPED IN CALLGRIND.THESEUS<<<<"
62
63     cd = []
64     for i in range(NUM_DOCS):
65         cd.append(s.create_doc({'payload': payload}))
66     d1 = defer.gatherResults(cd)
67
68
69
70     # XXX comment out to nuke out the actual sync
71     #d1.addCallback(do_sync)
72     d1.addCallback(stop_tracing)
73
74
75     return d1