oeqa/selftest/context: write testresult to json files

As part of the solution to replace Testopia to store testresult,
OEQA selftest need to output testresult into json files, where
these json testresult files will be stored into git repository
by the future test-case-management tools.

By default, json testresult file will be written to "oeqa"
directory under the oe-selftest log directory.

To configure multiple instances of bitbake to write json testresult
to a single testresult file at custom directory, user will define
the variable "OEQA_JSON_RESULT_DIR" with the custom directory for
json testresult.

(From OE-Core rev: a95218525a4c8228fff9908ffbda85c6b85e101c)

Signed-off-by: Yeoh Ee Peng <ee.peng.yeoh@intel.com>
Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
This commit is contained in:
Yeoh Ee Peng
2018-10-23 13:57:20 +08:00
committed by Richard Purdie
parent 3f2c5e0e24
commit 5a99880992

View File

@@ -202,6 +202,31 @@ class OESelftestTestContextExecutor(OETestContextExecutor):
self.tc.logger.info("Running bitbake -p")
runCmd("bitbake -p")
def _get_json_result_dir(self, args):
json_result_dir = os.path.join(os.path.dirname(os.path.abspath(args.output_log)), 'oeqa')
if "OEQA_JSON_RESULT_DIR" in self.tc.td:
json_result_dir = self.tc.td["OEQA_JSON_RESULT_DIR"]
return json_result_dir
def _get_configuration(self, args):
import platform
from oeqa.utils.metadata import metadata_from_bb
metadata = metadata_from_bb()
configuration = {'TEST_TYPE': 'oeselftest',
'START_TIME': args.test_start_time,
'MACHINE': self.tc.td["MACHINE"],
'HOST_DISTRO': ('-'.join(platform.linux_distribution())).replace(' ', '-'),
'HOST_NAME': metadata['hostname']}
layers = metadata['layers']
for l in layers:
configuration['%s_BRANCH_REV' % os.path.basename(l)] = '%s:%s' % (metadata['layers'][l]['branch'],
metadata['layers'][l]['commit'])
return configuration
def _get_result_id(self, configuration):
return '%s_%s_%s' % (configuration['TEST_TYPE'], configuration['HOST_DISTRO'], configuration['MACHINE'])
def _internal_run(self, logger, args):
self.module_paths = self._get_cases_paths(
self.tc_kwargs['init']['td']['BBPATH'].split(':'))
@@ -218,7 +243,10 @@ class OESelftestTestContextExecutor(OETestContextExecutor):
else:
self._pre_run()
rc = self.tc.runTests(**self.tc_kwargs['run'])
rc.logDetails()
configuration = self._get_configuration(args)
rc.logDetails(self._get_json_result_dir(args),
configuration,
self._get_result_id(configuration))
rc.logSummary(self.name)
return rc