chiark / gitweb /
Trivial resampler fixes
[disorder] / tests / dtest.py
index dd3c3a2d8a22c2fe5b034b2f9c3fe972735ddbbd..235d7467a73703fba565609ce18247f02f66148d 100644 (file)
@@ -202,10 +202,10 @@ def common_setup():
     os.mkdir(testroot)
     # Choose a port
     global port
-    port = random.randint(49152, 65535)
+    port = random.randint(49152, 65530)
     while not bindable(port + 1):
         print "port %d is not bindable, trying another" % (port + 1)
-        port = random.randint(49152, 65535)
+        port = random.randint(49152, 65530)
     # Log anything sent to that port
     packetlog = "%s/packetlog" % testroot
     subprocess.Popen(["disorder-udplog",
@@ -238,20 +238,23 @@ Start the daemon."""
                               stderr=errs)
     # Wait for the socket to be created
     waited = 0
+    sleep_resolution = 0.125
     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
+        waited += sleep_resolution
+        if sleep_resolution < 1:
+            sleep_resolution *= 2
         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)
+        time.sleep(sleep_resolution)
     if waited > 0:
-        print "  took about %ds for socket to appear" % waited
+        print "  took about %ss for socket to appear" % waited
     # Wait for root user to be created
     command(["disorder",
              "--config", disorder._configfile, "--no-per-user-config",
@@ -287,15 +290,13 @@ Stop the daemon if it has not stopped already"""
     rc = daemon.poll()
     if rc == None:
         print " stopping daemon"
-        disorder.client().shutdown()
+        os.kill(daemon.pid, 15)
         print "  waiting for daemon"
         rc = daemon.wait()
-        print "  daemon has stopped"
+        print "  daemon has stopped (rc=%d)" % rc
     else:
         print "  daemon already stopped"
     daemon = None
-    # Wait a bit for subprocess to finish too, to try to avoid stupid races
-    time.sleep(2)
 
 def run(module=None, report=True):
     """dtest.run(MODULE)
@@ -333,7 +334,7 @@ def run(module=None, report=True):
     stdtracks()
     try:
         module.test()
-    except:
+    except Exception, e:
         traceback.print_exc(None, sys.stderr)
         failures += 1
     stop_daemon()