def runAndObserve(self, specName, observers_ = [], saveResults = True): specId, spec = yield self._testDb.getSpecByName(specName) casesByTestee = yield self._testDb.generateCasesByTestee(specId) _observers = observers_[:] #_observers = observers_ ## publish WAMP event on test case finished ## def notify(runId, testRun, testCase, result, remaining): if testCase: evt = { 'testee': testRun.testee.name, 'runId': runId, 'index': testCase.index, 'passed': result.passed, 'remaining': remaining } topic = "http://api.testsuite.wamp.ws/testrun#onResult" else: evt = { 'testee': testRun.testee.name, 'runId': runId } topic = "http://api.testsuite.wamp.ws/testrun#onComplete" self.dispatch(topic, evt) #if result and not result.passed: # print topic, evt if self.dispatch: _observers.append(notify) ## save test results to test database ## def save(runId, testRun, testCase, result, remaining): if testCase: self._testDb.saveResult(runId, testRun, testCase, result, saveResults) if saveResults: _observers.append(save) testRuns = [] for obj in spec['testees']: testee = Testee(**obj) cases = casesByTestee.get(testee.name, []) if testee.options.has_key('randomize') and testee.options['randomize'] is not None: randomize = testee.options['randomize'] elif spec.has_key('options') and spec['options'].has_key('randomize') and spec['options']['randomize'] is not None: randomize = spec['options']['randomize'] else: randomize = False testRun = TestRun(testee, cases, randomize = randomize) testRuns.append(testRun) runId = yield self._testDb.newRun(specId) print print "Autobahn Fuzzing WAMP Client" print print "Autobahn Version : %s" % autobahn.version print "AutobahnTestsuite Version : %s" % autobahntestsuite.version #print "WAMP Test Cases : %d" % len(self._caseSet.Cases) print "WAMP Testees : %d" % len(spec["testees"]) print for testRun in testRuns: print "%s @ %s : %d test cases prepared" % (testRun.testee.name, testRun.testee.url, testRun.remaining()) print print def progress(runId, testRun, testCase, result, remaining): for obsv in _observers: try: obsv(runId, testRun, testCase, result, remaining) except Exception, e: print e