]> git.parisson.com Git - pdf.js.git/commitdiff
Run browsers in parallel. No limit on the number of concurrent browsers right now.
authorRob Sayre <sayrer@gmail.com>
Fri, 24 Jun 2011 15:43:26 +0000 (08:43 -0700)
committerRob Sayre <sayrer@gmail.com>
Fri, 24 Jun 2011 15:43:26 +0000 (08:43 -0700)
test/test.py

index 53f65f78ba94f6f4e82c29681530980ac7a2e8c1..7e678bd90aa6f25e21aa59a29a2002308212d18b 100644 (file)
@@ -1,4 +1,4 @@
-import json, platform, os, shutil, sys, subprocess, tempfile, threading, urllib, urllib2
+import json, platform, os, shutil, sys, subprocess, tempfile, threading, time, urllib, urllib2
 from BaseHTTPServer import BaseHTTPRequestHandler, HTTPServer
 import SocketServer
 from optparse import OptionParser
@@ -138,6 +138,7 @@ class BrowserCommand():
     def __init__(self, browserRecord):
         self.name = browserRecord["name"]
         self.path = browserRecord["path"]
+        self.tempDir = None
 
         if platform.system() == "Darwin" and (self.path.endswith(".app") or self.path.endswith(".app/")):
             self._fixupMacPath()
@@ -151,19 +152,19 @@ class BrowserCommand():
     def setup(self):
         self.tempDir = tempfile.mkdtemp()
         self.profileDir = os.path.join(self.tempDir, "profile")
-        print self.profileDir
         shutil.copytree(os.path.join(DOC_ROOT, "test", "resources", "firefox"),
                         self.profileDir)
 
     def teardown(self):
-        shutil.rmtree(self.tempDir)
+        if self.tempDir is not None and os.path.exists(self.tempDir):
+            shutil.rmtree(self.tempDir)
 
     def start(self, url):
         cmds = [self.path]
         if platform.system() == "Darwin":
             cmds.append("-foreground")
         cmds.extend(["-no-remote", "-profile", self.profileDir, url])
-        subprocess.call(cmds)
+        subprocess.Popen(cmds)
 
 def makeBrowserCommands(browserManifestFile):
     with open(browserManifestFile) as bmf:
@@ -223,15 +224,22 @@ def setUp(options):
 
     State.remaining = len(testBrowsers) * len(manifestList)
 
-    for b in testBrowsers:
+    return testBrowsers
+
+def startBrowsers(browsers, options):
+    for b in browsers:
+        b.setup()
+        print 'Launching', b.name
+        qs = 'browser='+ urllib.quote(b.name) +'&manifestFile='+ urllib.quote(options.manifestFile)
+        b.start('http://localhost:8080/test/test_slave.html?'+ qs)
+
+def teardownBrowsers(browsers):
+    for b in browsers:
         try:
-            b.setup()
-            print 'Launching', b.name
-            qs = 'browser='+ urllib.quote(b.name) +'&manifestFile='+ urllib.quote(options.manifestFile)
-            b.start('http://localhost:8080/test/test_slave.html?'+ qs)
-        finally:
             b.teardown()
-
+        except:
+            print "Error cleaning up after browser at ", b.path
+    
 def check(task, results, browser):
     failed = False
     for r in xrange(len(results)):
@@ -385,8 +393,14 @@ def main():
     httpd_thread.setDaemon(True)
     httpd_thread.start()
 
-    setUp(options)
-    processResults()
+    browsers = setUp(options)
+    try:
+        startBrowsers(browsers, options)
+        while not State.done:
+            time.sleep(1)
+        processResults()
+    finally:
+        teardownBrowsers(browsers)
 
 if __name__ == '__main__':
     main()