summaryrefslogtreecommitdiffstats
path: root/meta/classes
diff options
context:
space:
mode:
authorYeoh Ee Peng <ee.peng.yeoh@intel.com>2018-10-23 13:57:22 +0800
committerRichard Purdie <richard.purdie@linuxfoundation.org>2018-10-29 17:26:47 +0000
commitfc16be17878486181d460416618f4f06d2be40e3 (patch)
tree622235ba8f1bd1401fdd5b68bfc6e404c6b11257 /meta/classes
parent8daaae42063c38b414522289a94009cdee421a05 (diff)
downloadpoky-fc16be17878486181d460416618f4f06d2be40e3.tar.gz
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: cdbedba7da9c3f97a642d79a5e8ec363ba938e35) Signed-off-by: Yeoh Ee Peng <ee.peng.yeoh@intel.com> Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
Diffstat (limited to 'meta/classes')
-rw-r--r--meta/classes/testsdk.bbclass36
1 files changed, 32 insertions, 4 deletions
diff --git a/meta/classes/testsdk.bbclass b/meta/classes/testsdk.bbclass
index d3f475d22b..a6c362723f 100644
--- a/meta/classes/testsdk.bbclass
+++ b/meta/classes/testsdk.bbclass
@@ -14,6 +14,30 @@
14# 14#
15# where "<image-name>" is an image like core-image-sato. 15# where "<image-name>" is an image like core-image-sato.
16 16
17def _get_sdk_configuration(d, test_type, pid):
18 import platform
19 configuration = {'TEST_TYPE': test_type,
20 'PROCESS_ID': pid,
21 'SDK_MACHINE': d.getVar("SDKMACHINE"),
22 'IMAGE_BASENAME': d.getVar("IMAGE_BASENAME"),
23 'IMAGE_PKGTYPE': d.getVar("IMAGE_PKGTYPE"),
24 'HOST_DISTRO': ('-'.join(platform.linux_distribution())).replace(' ', '-')}
25 layers = (d.getVar("BBLAYERS") or "").split()
26 for l in layers:
27 configuration['%s_BRANCH_REV' % os.path.basename(l)] = '%s:%s' % (base_get_metadata_git_branch(l, None).strip(),
28 base_get_metadata_git_revision(l, None))
29 return configuration
30
31def _get_sdk_json_result_dir(d):
32 json_result_dir = os.path.join(d.getVar("WORKDIR"), 'oeqa')
33 custom_json_result_dir = d.getVar("OEQA_JSON_RESULT_DIR")
34 if custom_json_result_dir:
35 json_result_dir = custom_json_result_dir
36 return json_result_dir
37
38def _get_sdk_result_id(configuration):
39 return '%s_%s_%s' % (configuration['TEST_TYPE'], configuration['IMAGE_BASENAME'], configuration['SDK_MACHINE'])
40
17def testsdk_main(d): 41def testsdk_main(d):
18 import os 42 import os
19 import subprocess 43 import subprocess
@@ -80,8 +104,10 @@ def testsdk_main(d):
80 104
81 component = "%s %s" % (pn, OESDKTestContextExecutor.name) 105 component = "%s %s" % (pn, OESDKTestContextExecutor.name)
82 context_msg = "%s:%s" % (os.path.basename(tcname), os.path.basename(sdk_env)) 106 context_msg = "%s:%s" % (os.path.basename(tcname), os.path.basename(sdk_env))
83 107 configuration = _get_sdk_configuration(d, 'sdk', os.getpid())
84 result.logDetails() 108 result.logDetails(_get_sdk_json_result_dir(d),
109 configuration,
110 _get_sdk_result_id(configuration))
85 result.logSummary(component, context_msg) 111 result.logSummary(component, context_msg)
86 112
87 if not result.wasSuccessful(): 113 if not result.wasSuccessful():
@@ -184,8 +210,10 @@ def testsdkext_main(d):
184 210
185 component = "%s %s" % (pn, OESDKExtTestContextExecutor.name) 211 component = "%s %s" % (pn, OESDKExtTestContextExecutor.name)
186 context_msg = "%s:%s" % (os.path.basename(tcname), os.path.basename(sdk_env)) 212 context_msg = "%s:%s" % (os.path.basename(tcname), os.path.basename(sdk_env))
187 213 configuration = _get_sdk_configuration(d, 'sdkext', os.getpid())
188 result.logDetails() 214 result.logDetails(_get_sdk_json_result_dir(d),
215 configuration,
216 _get_sdk_result_id(configuration))
189 result.logSummary(component, context_msg) 217 result.logSummary(component, context_msg)
190 218
191 if not result.wasSuccessful(): 219 if not result.wasSuccessful():