REFDIR = 'ref'
TMPDIR = 'tmp'
VERBOSE = False
+BROWSER_TIMEOUT = 60
SERVER_HOST = "localhost"
browsers = [ ]
manifest = { }
taskResults = { }
- remaining = 0
+ remaining = { }
results = { }
done = False
numErrors = 0
numFBFFailures = 0
numLoadFailures = 0
eqLog = None
+ lastPost = { }
class Result:
def __init__(self, snapshot, failure, page):
result = json.loads(self.rfile.read(numBytes))
browser, id, failure, round, page, snapshot = result['browser'], result['id'], result['failure'], result['round'], result['page'], result['snapshot']
+ State.lastPost[browser] = int(time.time())
taskResults = State.taskResults[browser][id]
taskResults[round].append(Result(snapshot, failure, page))
self.server.masterMode)
# Please oh please GC this ...
del State.taskResults[browser][id]
- State.remaining -= 1
+ State.remaining[browser] -= 1
- State.done = (0 == State.remaining)
+ checkIfDone()
+
+def checkIfDone():
+ State.done = True
+ for key in State.remaining:
+ if State.remaining[key] != 0:
+ State.done = False
+ return
# Applescript hack to quit Chrome on Mac
def tellAppToQuit(path, query):
for b in testBrowsers:
State.taskResults[b.name] = { }
+ State.remaining[b.name] = len(manifestList)
+ State.lastPost[b.name] = int(time.time())
for item in manifestList:
id, rounds = item['id'], int(item['rounds'])
State.manifest[id] = item
taskResults.append([ ])
State.taskResults[b.name][id] = taskResults
- State.remaining = len(testBrowsers) * len(manifestList)
-
return testBrowsers
def startBrowsers(browsers, options):
try:
startBrowsers(browsers, options)
while not State.done:
+ for b in State.lastPost:
+ if State.remaining[b] > 0 and int(time.time()) - State.lastPost[b] > BROWSER_TIMEOUT:
+ print 'TEST-UNEXPECTED-FAIL | test failed', b, "has not responded in", BROWSER_TIMEOUT, "s"
+ State.numErrors += State.remaining[b]
+ State.remaining[b] = 0
+ checkIfDone()
time.sleep(1)
processResults()
finally: