Run browsers in parallel. No limit on the number of concurrent browsers right now.
This commit is contained in:
parent
2e2924430a
commit
a1440b8e15
38
test/test.py
38
test/test.py
@ -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,14 +224,21 @@ 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
|
||||
@ -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()
|
||||
|
Loading…
Reference in New Issue
Block a user