summaryrefslogtreecommitdiffstats
path: root/meta/lib
diff options
context:
space:
mode:
authorNathan Rossi <nathan@nathanrossi.com>2019-09-11 14:13:07 +0000
committerRichard Purdie <richard.purdie@linuxfoundation.org>2019-09-16 23:02:43 +0100
commite08f657220fa119793949e26b2837026956d4238 (patch)
treeddc35ec5e3468daeec7446a8d8f1b2307785b325 /meta/lib
parent0c19c093358fa65d93c86cc8978fa50b5bd97026 (diff)
downloadpoky-e08f657220fa119793949e26b2837026956d4238.tar.gz
oeqa/core/case.py: Add OEPTestResultTestCase for ptestresult helpers
Add the OEPTestResultTestCase class as a mix-in class to provide helper functions for interacting with ptestresults within the extraresults object generated by the test case. This class also provides default compression of log text and log files. Also add support to resulttool for decoding/decompressing log files embedded in the test results. (From OE-Core rev: 06cba9883a5964320969301fd05eeb6bec3e786d) Signed-off-by: Nathan Rossi <nathan@nathanrossi.com> Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
Diffstat (limited to 'meta/lib')
-rw-r--r--meta/lib/oeqa/core/case.py49
1 files changed, 49 insertions, 0 deletions
diff --git a/meta/lib/oeqa/core/case.py b/meta/lib/oeqa/core/case.py
index aca144e9dc..180635ac6c 100644
--- a/meta/lib/oeqa/core/case.py
+++ b/meta/lib/oeqa/core/case.py
@@ -4,6 +4,8 @@
4# SPDX-License-Identifier: MIT 4# SPDX-License-Identifier: MIT
5# 5#
6 6
7import base64
8import zlib
7import unittest 9import unittest
8 10
9from oeqa.core.exception import OEQAMissingVariable 11from oeqa.core.exception import OEQAMissingVariable
@@ -49,3 +51,50 @@ class OETestCase(unittest.TestCase):
49 for d in self.decorators: 51 for d in self.decorators:
50 d.tearDownDecorator() 52 d.tearDownDecorator()
51 self.tearDownMethod() 53 self.tearDownMethod()
54
55class OEPTestResultTestCase:
56 """
57 Mix-in class to provide functions to make interacting with extraresults for
58 the purposes of storing ptestresult data.
59 """
60 @staticmethod
61 def _compress_log(log):
62 logdata = log.encode("utf-8")
63 logdata = zlib.compress(logdata)
64 logdata = base64.b64encode(logdata).decode("utf-8")
65 return {"compressed" : logdata}
66
67 def ptest_rawlog(self, log):
68 if not hasattr(self, "extraresults"):
69 self.extraresults = {"ptestresult.sections" : {}}
70 self.extraresults["ptestresult.rawlogs"] = {"log" : self._compress_log(log)}
71
72 def ptest_section(self, section, duration = None, log = None, logfile = None, exitcode = None):
73 if not hasattr(self, "extraresults"):
74 self.extraresults = {"ptestresult.sections" : {}}
75
76 sections = self.extraresults.get("ptestresult.sections")
77 if section not in sections:
78 sections[section] = {}
79
80 if log is not None:
81 sections[section]["log"] = self._compress_log(log)
82 elif logfile is not None:
83 with open(logfile, "r") as f:
84 sections[section]["log"] = self._compress_log(f.read())
85
86 if duration is not None:
87 sections[section]["duration"] = duration
88 if exitcode is not None:
89 sections[section]["exitcode"] = exitcode
90
91 def ptest_result(self, section, test, result):
92 if not hasattr(self, "extraresults"):
93 self.extraresults = {"ptestresult.sections" : {}}
94
95 sections = self.extraresults.get("ptestresult.sections")
96 if section not in sections:
97 sections[section] = {}
98 resultname = "ptestresult.{}.{}".format(section, test)
99 self.extraresults[resultname] = {"status" : result}
100