Browse Source

Some cleanup in test/multipEp.py

master
Edouard Tisserant 9 years ago
parent
commit
0dd376189d
  1. 124
      test/multipEp.py

124
test/multipEp.py

@ -9,31 +9,35 @@ import itertools
from copy import deepcopy
from collections import OrderedDict
# manager globals
instances = None
# ----------------------------------------------------------------------------
# GLOBALS
# ----------------------------------------------------------------------------
# per-instance globals
if(multiprocessing.current_process().name == "MainProcess"):
ctx = multiprocessing.get_context('spawn')
# import pEp in main process just to get enums
# TODO: would be really great if no session was created until we really use it.
pEp = importlib.import_module("pEp")
else:
pEp = None
handler = None
sync_handler = None
own_addresses = []
indent = 0
i_name = ""
handshakes_pending = []
handshakes_to_accept = []
pEp = None
# manager globals
instances = None
if(multiprocessing.current_process().name == "MainProcess"):
ctx = multiprocessing.get_context('spawn')
# import pEp in main process to get enums
pEp = importlib.import_module("pEp")
# both side globals (managed by MP)
handshakes_seen = []
handshakes_validated = []
msgs_folders = None
# ----------------------------------------------------------------------------
# INSTANCE ACIONS
# ----------------------------------------------------------------------------
def create_account(address, name, flags=None):
global own_addresses
i = pEp.Identity(address, name)
@ -50,12 +54,6 @@ def _send_message(address, msg):
msgs.append(str(msg))
msgs_folders[address] = msgs
def flush_all_mails():
global msgs_folders
count = sum(map(len,msgs_folders.values()))
msgs_folders.clear()
return count
def _encrypted_message(from_address, to_address, shortmsg, longmsg):
m = pEp.outgoing_message(pEp.Identity(from_address, from_address))
m.to = [pEp.Identity(to_address, to_address)]
@ -81,6 +79,46 @@ def decrypt_message(msgstr):
printi("---")
return rating
# ----------------------------------------------------------------------------
# MANAGER ACIONS
# ----------------------------------------------------------------------------
def flush_all_mails():
global msgs_folders
count = sum(map(len,msgs_folders.values()))
msgs_folders.clear()
return count
def restart_instance(iname):
tmpdir, instance_addresses = stop_instance(iname)
instances[iname] = start_instance(iname, tmpdir, instance_addresses)
def cycle_until_no_change(*instancelist, maxcycles=20):
count = 0
while True:
global msgs_folders
tmp = deepcopy(dict(msgs_folders))
for iname in instancelist:
action = (iname, [])
run_instance_action(action)
count += 1
if dict(msgs_folders) == tmp:
return count
if count >= maxcycles:
raise Exception("Too many cycles waiting for stability")
def expect(expectation):
def _expect(res, action):
if(expectation != res):
raise Exception("Expected " + str(expectation) + ", got " + str(res))
return _expect
# ----------------------------------------------------------------------------
# "PRETTY" PRINTING
# ----------------------------------------------------------------------------
def printi(*args):
global indent
print(i_name + ">" * indent, *args)
@ -111,7 +149,11 @@ def printmsg(msg):
pfx = " "
printi("attachments : ", msg.attachments)
def execute_order(order, handler):
# ----------------------------------------------------------------------------
# INSTANCE TEST EXECUTION
# ----------------------------------------------------------------------------
def execute_order(order):
global handshakes_pending, handshakes_to_accept, handshakes_seen
global handshakes_validated, msgs_folders, own_addresses
@ -151,7 +193,7 @@ def execute_order(order, handler):
handshakes_validated.remove(tw)
handshakes_pending.remove(tple)
printi("ACCEPT pending handshake : "+ tw)
handler.deliverHandshakeResult(partner, 0)
sync_handler.deliverHandshakeResult(partner, 0)
printheader()
res = None
@ -170,13 +212,13 @@ def execute_order(order, handler):
printi("ACCEPT handshake : "+ tw)
handshakes_validated.append(tw)
handshakes_to_accept.remove(tple)
handler.deliverHandshakeResult(partner, 0)
sync_handler.deliverHandshakeResult(partner, 0)
printheader()
return res
def pEp_instance_run(iname, _own_addresses, conn, _msgs_folders, _handshakes_seen, _handshakes_validated):
global pEp, handler, own_addresses, i_name, msgs_folders
global pEp, sync_handler, own_addresses, i_name, msgs_folders
global handshakes_pending, handshakes_to_accept
global handshakes_seen, handshakes_validated
@ -212,20 +254,20 @@ def pEp_instance_run(iname, _own_addresses, conn, _msgs_folders, _handshakes_see
printheader()
def setTimeout(self, timeout):
print("SET TIMEOUT :", timeout)
printi("SET TIMEOUT :", timeout)
def cancelTimeout(self):
print("CANCEL TIMEOUT !")
printi("CANCEL TIMEOUT !")
handler = Handler()
sync_handler = Handler()
while True:
order = conn.recv()
if order is None:
break
res = execute_order(order, handler)
res = execute_order(order)
conn.send(res)
@ -240,6 +282,10 @@ def pEp_instance_main(iname, tmpdirname, *args):
pEp_instance_run(iname, *args)
print(iname + " exiting")
# ----------------------------------------------------------------------------
# MANAGER TEST EXECUTION
# ----------------------------------------------------------------------------
def start_debug(iname, proc):
print("#"*80 + "\n" +
"INSTANCE " + iname + "\n" +
@ -306,10 +352,6 @@ def purge_instances():
for iname in instances.keys():
stop_instance(iname)
def restart_instance(iname):
tmpdir, instance_addresses = stop_instance(iname)
instances[iname] = start_instance(iname, tmpdir, instance_addresses)
def run_instance_action(action):
iname, order = action
proc, conn, tmpdir, execnt = get_instance(iname)
@ -382,25 +424,3 @@ def run_scenario(scenario):
if t:
raise t(v).with_traceback(tv)
def cycle_until_no_change(*instancelist, maxcycles=20):
count = 0
while True:
global msgs_folders
tmp = deepcopy(dict(msgs_folders))
for iname in instancelist:
action = (iname, [])
run_instance_action(action)
count += 1
if dict(msgs_folders) == tmp:
return count
if count >= maxcycles:
raise Exception("Too many cycles waiting for stability")
def expect(expectation):
def _expect(res, action):
if(expectation != res):
raise Exception("Expected " + str(expectation) + ", got " + str(res))
return _expect

Loading…
Cancel
Save