chiark / gitweb /
Hands-off reading for FLAC.
[disorder] / tests / dtest.py
index 49bbfaac620382c5b6dad70bf6aa81c9f4428c39..a5a8be9c7c483ad2de06fad4831e8857ec1526de 100644 (file)
@@ -85,7 +85,7 @@ Make track with relative path S exist"""
     trackdir = os.path.dirname(trackpath)
     if not os.path.exists(trackdir):
         os.makedirs(trackdir)
-    copyfile("%s/sounds/long.ogg" % top_builddir, trackpath)
+    copyfile("%s/sounds/long.ogg" % top_srcdir, trackpath)
     # We record the tracks we created so they can be tested against
     # server responses.  We put them into NFC since that's what the server
     # uses internally.
@@ -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",
@@ -283,6 +286,7 @@ def stop_daemon():
 Stop the daemon if it has not stopped already"""
     global daemon
     if daemon == None:
+        print " (daemon not running)"
         return
     rc = daemon.poll()
     if rc == None:
@@ -294,8 +298,6 @@ Stop the daemon if it has not stopped already"""
     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)
@@ -336,7 +338,9 @@ def run(module=None, report=True):
     except Exception, e:
         traceback.print_exc(None, sys.stderr)
         failures += 1
-    stop_daemon()
+    finally:
+        stop_daemon()
+        os.system("ps -ef | grep disorderd")
     if report:
         if failures:
             print " FAILED"