X-Git-Url: https://www.chiark.greenend.org.uk/ucgi/~mdw/git/disorder/blobdiff_plain/fc9c24e3ebb095d05e2d140526289c622d6e5504..1a4a6350a9033f0c2d1e2b7e6c1a029bdaa46da6:/tests/dtest.py diff --git a/tests/dtest.py b/tests/dtest.py index 38c7219..6ae9fd7 100644 --- a/tests/dtest.py +++ b/tests/dtest.py @@ -21,7 +21,7 @@ """Utility module used by tests""" -import os,os.path,subprocess,sys,re +import os,os.path,subprocess,sys,re,time def fatal(s): """Write an error message and exit""" @@ -137,12 +137,34 @@ Start the daemon.""" global daemon, errs assert daemon == None print " starting daemon" + # remove the socket if it exists + socket = "%s/socket" % testroot + try: + os.remove(socket) + except: + pass daemon = subprocess.Popen(["disorderd", "--foreground", "--config", "%s/config" % testroot], stderr=errs) disorder._configfile = "%s/config" % testroot disorder._userconf = False + # Wait for the socket to be created + waited = 0 + while not os.path.exists(socket): + rc = daemon.poll() + if rc is not None: + print "FATAL: daemon failed to start up" + sys.exit(1) + waited += 1 + if waited == 1: + print " waiting for socket..." + elif waited >= 60: + print "FATAL: took too long for socket to appear" + sys.exit(1) + time.sleep(1) + if waited > 0: + print " took about %ds for socket to appear" % waited def stop_daemon(): """stop_daemon() @@ -155,8 +177,11 @@ Stop the daemon if it has not stopped already""" if rc == None: print " stopping daemon" os.kill(daemon.pid, 15) + print " waiting for daemon" rc = daemon.wait() - print " daemon has stopped" + print " daemon has stopped" + else: + print " daemon already stopped" daemon = None def run(module=None, report=True):