diff options
| author | Aníbal Limón <anibal.limon@linux.intel.com> | 2016-11-30 15:11:40 -0600 |
|---|---|---|
| committer | Richard Purdie <richard.purdie@linuxfoundation.org> | 2017-01-23 12:05:19 +0000 |
| commit | 03d175f1fae52428da8ff43fd3de336dcd761362 (patch) | |
| tree | 06c4af93fc9945dc35a9b5973c9e2f080c3d01ef /meta/classes/testsdk.bbclass | |
| parent | 14eee4fdf844e70966124bd3b1677e79a76d16a2 (diff) | |
| download | poky-03d175f1fae52428da8ff43fd3de336dcd761362.tar.gz | |
classes/testsdk: Migrate to use the new OESDKExtTestContext
(From OE-Core rev: b254822dad850ce74563c83b7a9e31463501baa7)
Signed-off-by: Aníbal Limón <anibal.limon@linux.intel.com>
Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
Diffstat (limited to 'meta/classes/testsdk.bbclass')
| -rw-r--r-- | meta/classes/testsdk.bbclass | 98 |
1 files changed, 45 insertions, 53 deletions
diff --git a/meta/classes/testsdk.bbclass b/meta/classes/testsdk.bbclass index 176dafd6b3..69689a1b36 100644 --- a/meta/classes/testsdk.bbclass +++ b/meta/classes/testsdk.bbclass | |||
| @@ -16,37 +16,6 @@ | |||
| 16 | 16 | ||
| 17 | TESTSDKLOCK = "${TMPDIR}/testsdk.lock" | 17 | TESTSDKLOCK = "${TMPDIR}/testsdk.lock" |
| 18 | 18 | ||
| 19 | def run_test_context(CTestContext, d, testdir, tcname, pn, *args): | ||
| 20 | import glob | ||
| 21 | import time | ||
| 22 | |||
| 23 | targets = glob.glob(d.expand(testdir + "/tc/environment-setup-*")) | ||
| 24 | for sdkenv in targets: | ||
| 25 | bb.plain("Testing %s" % sdkenv) | ||
| 26 | tc = CTestContext(d, testdir, sdkenv, tcname, args) | ||
| 27 | |||
| 28 | # this is a dummy load of tests | ||
| 29 | # we are doing that to find compile errors in the tests themselves | ||
| 30 | # before booting the image | ||
| 31 | try: | ||
| 32 | tc.loadTests() | ||
| 33 | except Exception as e: | ||
| 34 | import traceback | ||
| 35 | bb.fatal("Loading tests failed:\n%s" % traceback.format_exc()) | ||
| 36 | |||
| 37 | starttime = time.time() | ||
| 38 | result = tc.runTests() | ||
| 39 | stoptime = time.time() | ||
| 40 | if result.wasSuccessful(): | ||
| 41 | bb.plain("%s SDK(%s):%s - Ran %d test%s in %.3fs" % (pn, os.path.basename(tcname), os.path.basename(sdkenv),result.testsRun, result.testsRun != 1 and "s" or "", stoptime - starttime)) | ||
| 42 | msg = "%s - OK - All required tests passed" % pn | ||
| 43 | skipped = len(result.skipped) | ||
| 44 | if skipped: | ||
| 45 | msg += " (skipped=%d)" % skipped | ||
| 46 | bb.plain(msg) | ||
| 47 | else: | ||
| 48 | bb.fatal("%s - FAILED - check the task log and the commands log" % pn) | ||
| 49 | |||
| 50 | def testsdk_main(d): | 19 | def testsdk_main(d): |
| 51 | import os | 20 | import os |
| 52 | import subprocess | 21 | import subprocess |
| @@ -122,7 +91,6 @@ addtask testsdk | |||
| 122 | do_testsdk[nostamp] = "1" | 91 | do_testsdk[nostamp] = "1" |
| 123 | do_testsdk[lockfiles] += "${TESTSDKLOCK}" | 92 | do_testsdk[lockfiles] += "${TESTSDKLOCK}" |
| 124 | 93 | ||
| 125 | TEST_LOG_SDKEXT_DIR ?= "${WORKDIR}/testsdkext" | ||
| 126 | TESTSDKEXTLOCK = "${TMPDIR}/testsdkext.lock" | 94 | TESTSDKEXTLOCK = "${TMPDIR}/testsdkext.lock" |
| 127 | 95 | ||
| 128 | def testsdkext_main(d): | 96 | def testsdkext_main(d): |
| @@ -132,7 +100,11 @@ def testsdkext_main(d): | |||
| 132 | import logging | 100 | import logging |
| 133 | 101 | ||
| 134 | from bb.utils import export_proxies | 102 | from bb.utils import export_proxies |
| 135 | from oeqa.utils import avoid_paths_in_environ | 103 | from oeqa.utils import avoid_paths_in_environ, make_logger_bitbake_compatible |
| 104 | from oeqa.sdkext.context import OESDKExtTestContext, OESDKExtTestContextExecutor | ||
| 105 | |||
| 106 | pn = d.getVar("PN", True) | ||
| 107 | logger = make_logger_bitbake_compatible(logging.getLogger("BitBake")) | ||
| 136 | 108 | ||
| 137 | # extensible sdk use network | 109 | # extensible sdk use network |
| 138 | export_proxies(d) | 110 | export_proxies(d) |
| @@ -143,23 +115,27 @@ def testsdkext_main(d): | |||
| 143 | d.getVar('BASE_WORKDIR')] | 115 | d.getVar('BASE_WORKDIR')] |
| 144 | os.environ['PATH'] = avoid_paths_in_environ(paths_to_avoid) | 116 | os.environ['PATH'] = avoid_paths_in_environ(paths_to_avoid) |
| 145 | 117 | ||
| 146 | pn = d.getVar("PN") | ||
| 147 | bb.utils.mkdirhier(d.getVar("TEST_LOG_SDKEXT_DIR")) | ||
| 148 | |||
| 149 | tcname = d.expand("${SDK_DEPLOY}/${TOOLCHAINEXT_OUTPUTNAME}.sh") | 118 | tcname = d.expand("${SDK_DEPLOY}/${TOOLCHAINEXT_OUTPUTNAME}.sh") |
| 150 | if not os.path.exists(tcname): | 119 | if not os.path.exists(tcname): |
| 151 | bb.fatal("The toolchain ext %s is not built. Build it before running the" \ | 120 | bb.fatal("The toolchain ext %s is not built. Build it before running the" \ |
| 152 | " tests: 'bitbake <image> -c populate_sdk_ext' ." % tcname) | 121 | " tests: 'bitbake <image> -c populate_sdk_ext' ." % tcname) |
| 153 | 122 | ||
| 154 | testdir = d.expand("${WORKDIR}/testsdkext/") | 123 | tdname = d.expand("${SDK_DEPLOY}/${TOOLCHAINEXT_OUTPUTNAME}.testdata.json") |
| 155 | bb.utils.remove(testdir, True) | 124 | test_data = json.load(open(tdname, "r")) |
| 156 | bb.utils.mkdirhier(testdir) | 125 | |
| 157 | sdkdir = os.path.join(testdir, 'tc') | 126 | target_pkg_manifest = OESDKExtTestContextExecutor._load_manifest( |
| 127 | d.expand("${SDK_DEPLOY}/${TOOLCHAINEXT_OUTPUTNAME}.target.manifest")) | ||
| 128 | host_pkg_manifest = OESDKExtTestContextExecutor._load_manifest( | ||
| 129 | d.expand("${SDK_DEPLOY}/${TOOLCHAINEXT_OUTPUTNAME}.host.manifest")) | ||
| 130 | |||
| 131 | sdk_dir = d.expand("${WORKDIR}/testsdkext/") | ||
| 132 | bb.utils.remove(sdk_dir, True) | ||
| 133 | bb.utils.mkdirhier(sdk_dir) | ||
| 158 | try: | 134 | try: |
| 159 | subprocess.check_output("%s -y -d %s" % (tcname, sdkdir), shell=True) | 135 | subprocess.check_output("%s -y -d %s" % (tcname, sdk_dir), shell=True) |
| 160 | except subprocess.CalledProcessError as e: | 136 | except subprocess.CalledProcessError as e: |
| 161 | msg = "Couldn't install the extensible SDK:\n%s" % e.output.decode("utf-8") | 137 | msg = "Couldn't install the extensible SDK:\n%s" % e.output.decode("utf-8") |
| 162 | logfn = os.path.join(sdkdir, 'preparing_build_system.log') | 138 | logfn = os.path.join(sdk_dir, 'preparing_build_system.log') |
| 163 | if os.path.exists(logfn): | 139 | if os.path.exists(logfn): |
| 164 | msg += '\n\nContents of preparing_build_system.log:\n' | 140 | msg += '\n\nContents of preparing_build_system.log:\n' |
| 165 | with open(logfn, 'r') as f: | 141 | with open(logfn, 'r') as f: |
| @@ -167,19 +143,35 @@ def testsdkext_main(d): | |||
| 167 | msg += line | 143 | msg += line |
| 168 | bb.fatal(msg) | 144 | bb.fatal(msg) |
| 169 | 145 | ||
| 170 | try: | 146 | fail = False |
| 171 | bb.plain("Running SDK Compatibility tests ...") | 147 | sdk_envs = OESDKExtTestContextExecutor._get_sdk_environs(sdk_dir) |
| 172 | run_test_context(SDKExtTestContext, d, testdir, tcname, pn, True) | 148 | for s in sdk_envs: |
| 173 | finally: | 149 | bb.plain("Extensible SDK testing environment: %s" % s) |
| 174 | pass | ||
| 175 | 150 | ||
| 176 | try: | 151 | sdk_env = sdk_envs[s] |
| 177 | bb.plain("Running Extensible SDK tests ...") | 152 | tc = OESDKExtTestContext(td=test_data, logger=logger, sdk_dir=sdk_dir, |
| 178 | run_test_context(SDKExtTestContext, d, testdir, tcname, pn) | 153 | sdk_env=sdk_env, target_pkg_manifest=target_pkg_manifest, |
| 179 | finally: | 154 | host_pkg_manifest=host_pkg_manifest) |
| 180 | pass | 155 | |
| 156 | try: | ||
| 157 | tc.loadTests(OESDKExtTestContextExecutor.default_cases) | ||
| 158 | except Exception as e: | ||
| 159 | import traceback | ||
| 160 | bb.fatal("Loading tests failed:\n%s" % traceback.format_exc()) | ||
| 161 | |||
| 162 | result = tc.runTests() | ||
| 181 | 163 | ||
| 182 | bb.utils.remove(testdir, True) | 164 | component = "%s %s" % (pn, OESDKExtTestContextExecutor.name) |
| 165 | context_msg = "%s:%s" % (os.path.basename(tcname), os.path.basename(sdk_env)) | ||
| 166 | |||
| 167 | tc.logSummary(result, component, context_msg) | ||
| 168 | tc.logDetails() | ||
| 169 | |||
| 170 | if not result.wasSuccessful(): | ||
| 171 | fail = True | ||
| 172 | |||
| 173 | if fail: | ||
| 174 | bb.fatal("%s - FAILED - check the task log and the commands log" % pn) | ||
| 183 | 175 | ||
| 184 | testsdkext_main[vardepsexclude] =+ "BB_ORIGENV" | 176 | testsdkext_main[vardepsexclude] =+ "BB_ORIGENV" |
| 185 | 177 | ||
