diff options
Diffstat (limited to 'poky/meta/lib/oeqa/core/runner.py')
-rw-r--r-- | poky/meta/lib/oeqa/core/runner.py | 35 |
1 files changed, 27 insertions, 8 deletions
diff --git a/poky/meta/lib/oeqa/core/runner.py b/poky/meta/lib/oeqa/core/runner.py index f8bb23f34..df88b85f1 100644 --- a/poky/meta/lib/oeqa/core/runner.py +++ b/poky/meta/lib/oeqa/core/runner.py @@ -36,6 +36,9 @@ class OETestResult(_TestResult): super(OETestResult, self).__init__(*args, **kwargs) self.successes = [] + self.starttime = {} + self.endtime = {} + self.progressinfo = {} # Inject into tc so that TestDepends decorator can see results tc.results = self @@ -43,13 +46,25 @@ class OETestResult(_TestResult): self.tc = tc def startTest(self, test): - # Allow us to trigger the testcase buffer mode on a per test basis - # so stdout/stderr are only printed upon failure. Enables debugging - # but clean output - if hasattr(test, "buffer"): - self.buffer = test.buffer + # May have been set by concurrencytest + if test.id() not in self.starttime: + self.starttime[test.id()] = time.time() super(OETestResult, self).startTest(test) + def stopTest(self, test): + self.endtime[test.id()] = time.time() + super(OETestResult, self).stopTest(test) + if test.id() in self.progressinfo: + self.tc.logger.info(self.progressinfo[test.id()]) + + # Print the errors/failures early to aid/speed debugging, its a pain + # to wait until selftest finishes to see them. + for t in ['failures', 'errors', 'skipped', 'expectedFailures']: + for (scase, msg) in getattr(self, t): + if test.id() == scase.id(): + self.tc.logger.info(str(msg)) + break + def logSummary(self, component, context_msg=''): elapsed_time = self.tc._run_end_time - self.tc._run_start_time self.tc.logger.info("SUMMARY:") @@ -78,13 +93,13 @@ class OETestResult(_TestResult): # When fails at module or class level the class name is passed as string # so figure out to see if match - m = re.search("^setUpModule \((?P<module_name>.*)\)$", scase_str) + m = re.search(r"^setUpModule \((?P<module_name>.*)\)$", scase_str) if m: if case.__class__.__module__ == m.group('module_name'): found = True break - m = re.search("^setUpClass \((?P<class_name>.*)\)$", scase_str) + m = re.search(r"^setUpClass \((?P<class_name>.*)\)$", scase_str) if m: class_name = "%s.%s" % (case.__class__.__module__, case.__class__.__name__) @@ -122,9 +137,13 @@ class OETestResult(_TestResult): if hasattr(d, 'oeid'): oeid = d.oeid + t = "" + if case.id() in self.starttime and case.id() in self.endtime: + t = " (" + "{0:.2f}".format(self.endtime[case.id()] - self.starttime[case.id()]) + "s)" + if status not in logs: logs[status] = [] - logs[status].append("RESULTS - %s - Testcase %s: %s" % (case.id(), oeid, status)) + logs[status].append("RESULTS - %s - Testcase %s: %s%s" % (case.id(), oeid, status, t)) if log: result[case.id()] = {'status': status, 'log': log} else: |