From bd5f5ab6f7350b4487c9cc2dbd100fa4b687d0fa Mon Sep 17 00:00:00 2001 From: Markus Lehtonen Date: Thu, 3 Nov 2016 10:41:34 +0200 Subject: oeqa.buildperf: include error details in json report This will typically mean assert message and exception type plus a traceback. In case of skipped tests the reason (i.e. skip message) is included. [YOCTO #10590] Signed-off-by: Markus Lehtonen Signed-off-by: Ross Burton --- meta/lib/oeqa/buildperf/base.py | 24 ++++++++++++++++++++++++ 1 file changed, 24 insertions(+) (limited to 'meta/lib') diff --git a/meta/lib/oeqa/buildperf/base.py b/meta/lib/oeqa/buildperf/base.py index 71f3382d0b..668e822018 100644 --- a/meta/lib/oeqa/buildperf/base.py +++ b/meta/lib/oeqa/buildperf/base.py @@ -139,6 +139,21 @@ class BuildPerfTestResult(unittest.TextTestResult): super(BuildPerfTestResult, self).addSuccess(test) self.successes.append(test) + def addError(self, test, err): + """Record results from crashed test""" + test.err = err + super(BuildPerfTestResult, self).addError(test, err) + + def addFailure(self, test, err): + """Record results from failed test""" + test.err = err + super(BuildPerfTestResult, self).addFailure(test, err) + + def addExpectedFailure(self, test, err): + """Record results from expectedly failed test""" + test.err = err + super(BuildPerfTestResult, self).addExpectedFailure(test, err) + def startTest(self, test): """Pre-test hook""" test.base_dir = self.out_dir @@ -226,6 +241,13 @@ class BuildPerfTestResult(unittest.TextTestResult): 'cmd_log_file': os.path.relpath(test.cmd_log_file, self.out_dir), 'measurements': test.measurements} + if status in ('ERROR', 'FAILURE', 'EXPECTED_FAILURE'): + tests[test.name]['message'] = str(test.err[1]) + tests[test.name]['err_type'] = test.err[0].__name__ + tests[test.name]['err_output'] = reason + elif reason: + tests[test.name]['message'] = reason + results['tests'] = tests with open(os.path.join(self.out_dir, 'results.json'), 'w') as fobj: @@ -307,6 +329,8 @@ class BuildPerfTestCase(unittest.TestCase): self.start_time = None self.elapsed_time = None self.measurements = [] + # self.err is supposed to be a tuple from sys.exc_info() + self.err = None self.bb_vars = get_bb_vars() # TODO: remove 'times' and 'sizes' arrays when globalres support is # removed -- cgit 1.2.3-korg