From 8ea47d187dbb211b6caa33e996694ab6be136804 Mon Sep 17 00:00:00 2001 From: Yeoh Ee Peng Date: Tue, 23 Oct 2018 13:57:22 +0800 Subject: testsdk.bbclass: write testresult to json files As part of the solution to replace Testopia to store testresult, OEQA sdk and sdkext 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 "WORKDIR" 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: eefb07907873d20f2e66d3784106f6f72030b5b2) Signed-off-by: Yeoh Ee Peng Signed-off-by: Richard Purdie --- meta/classes/testsdk.bbclass | 36 ++++++++++++++++++++++++++++++++---- 1 file changed, 32 insertions(+), 4 deletions(-) (limited to 'meta/classes') diff --git a/meta/classes/testsdk.bbclass b/meta/classes/testsdk.bbclass index 103cc56bf5..66170e3377 100644 --- a/meta/classes/testsdk.bbclass +++ b/meta/classes/testsdk.bbclass @@ -14,6 +14,30 @@ # # where "" is an image like core-image-sato. +def _get_sdk_configuration(d, test_type, pid): + import platform + configuration = {'TEST_TYPE': test_type, + 'PROCESS_ID': pid, + 'SDK_MACHINE': d.getVar("SDKMACHINE"), + 'IMAGE_BASENAME': d.getVar("IMAGE_BASENAME"), + 'IMAGE_PKGTYPE': d.getVar("IMAGE_PKGTYPE"), + 'HOST_DISTRO': ('-'.join(platform.linux_distribution())).replace(' ', '-')} + layers = (d.getVar("BBLAYERS") or "").split() + for l in layers: + configuration['%s_BRANCH_REV' % os.path.basename(l)] = '%s:%s' % (base_get_metadata_git_branch(l, None).strip(), + base_get_metadata_git_revision(l, None)) + return configuration + +def _get_sdk_json_result_dir(d): + json_result_dir = os.path.join(d.getVar("WORKDIR"), 'oeqa') + custom_json_result_dir = d.getVar("OEQA_JSON_RESULT_DIR") + if custom_json_result_dir: + json_result_dir = custom_json_result_dir + return json_result_dir + +def _get_sdk_result_id(configuration): + return '%s_%s_%s' % (configuration['TEST_TYPE'], configuration['IMAGE_BASENAME'], configuration['SDK_MACHINE']) + def testsdk_main(d): import os import subprocess @@ -69,8 +93,10 @@ def testsdk_main(d): component = "%s %s" % (pn, OESDKTestContextExecutor.name) context_msg = "%s:%s" % (os.path.basename(tcname), os.path.basename(sdk_env)) - - result.logDetails() + configuration = _get_sdk_configuration(d, 'sdk', os.getpid()) + result.logDetails(_get_sdk_json_result_dir(d), + configuration, + _get_sdk_result_id(configuration)) result.logSummary(component, context_msg) if not result.wasSuccessful(): @@ -172,8 +198,10 @@ def testsdkext_main(d): component = "%s %s" % (pn, OESDKExtTestContextExecutor.name) context_msg = "%s:%s" % (os.path.basename(tcname), os.path.basename(sdk_env)) - - result.logDetails() + configuration = _get_sdk_configuration(d, 'sdkext', os.getpid()) + result.logDetails(_get_sdk_json_result_dir(d), + configuration, + _get_sdk_result_id(configuration)) result.logSummary(component, context_msg) if not result.wasSuccessful(): -- cgit v1.2.3-54-g00ecf