diff options
Diffstat (limited to 'meta/classes/testsdk.bbclass')
-rw-r--r-- | meta/classes/testsdk.bbclass | 45 |
1 files changed, 40 insertions, 5 deletions
diff --git a/meta/classes/testsdk.bbclass b/meta/classes/testsdk.bbclass index 2e43343643e..6f81fe01531 100644 --- a/meta/classes/testsdk.bbclass +++ b/meta/classes/testsdk.bbclass @@ -24,8 +24,6 @@ def testsdk_main(d): from oeqa.sdk.context import OESDKTestContext, OESDKTestContextExecutor from oeqa.utils import make_logger_bitbake_compatible - bb.event.enable_threadlock() - pn = d.getVar("PN") logger = make_logger_bitbake_compatible(logging.getLogger("BitBake")) @@ -44,6 +42,14 @@ def testsdk_main(d): host_pkg_manifest = OESDKTestContextExecutor._load_manifest( d.expand("${SDK_DEPLOY}/${TOOLCHAIN_OUTPUTNAME}.host.manifest")) + processes = d.getVar("TESTIMAGE_NUMBER_THREADS") or d.getVar("BB_NUMBER_THREADS") + if processes: + try: + import testtools, subunit + except ImportError: + bb.warn("Failed to import testtools or subunit, the testcases will run serially") + processes = None + sdk_dir = d.expand("${WORKDIR}/testimage-sdk/") bb.utils.remove(sdk_dir, True) bb.utils.mkdirhier(sdk_dir) @@ -67,13 +73,27 @@ def testsdk_main(d): import traceback bb.fatal("Loading tests failed:\n%s" % traceback.format_exc()) - result = tc.runTests() + if processes: + result = tc.runTests(processes=int(processes)) + else: + result = tc.runTests() component = "%s %s" % (pn, OESDKTestContextExecutor.name) context_msg = "%s:%s" % (os.path.basename(tcname), os.path.basename(sdk_env)) result.logDetails() result.logSummary(component, context_msg) + if (d.getVar('OEQA_SKIP_OUTPUT_JSON')) == '1': + bb.debug(2, 'Skip the OEQA output json testresult as OEQA_SKIP_OUTPUT_JSON=1') + else: + workdir = d.getVar("WORKDIR") + image_basename = d.getVar("IMAGE_BASENAME") + json_result_dir = os.path.join(workdir, + 'temp', + 'json_testresults-%s' % os.getpid(), + 'sdk', + image_basename) + result.logDetailsInJson(json_result_dir) if not result.wasSuccessful(): fail = True @@ -99,8 +119,6 @@ def testsdkext_main(d): from oeqa.utils import avoid_paths_in_environ, make_logger_bitbake_compatible, subprocesstweak from oeqa.sdkext.context import OESDKExtTestContext, OESDKExtTestContextExecutor - bb.event.enable_threadlock() - pn = d.getVar("PN") logger = make_logger_bitbake_compatible(logging.getLogger("BitBake")) @@ -157,6 +175,7 @@ def testsdkext_main(d): f.write('SSTATE_MIRRORS += " \\n file://.* file://%s/PATH"\n' % test_data.get('SSTATE_DIR')) f.write('SOURCE_MIRROR_URL = "file://%s"\n' % test_data.get('DL_DIR')) f.write('INHERIT += "own-mirrors"\n') + f.write('PREMIRRORS_prepend = " git://git.yoctoproject.org/.* git://%s/git2/git.yoctoproject.org.BASENAME \\n "\n' % test_data.get('DL_DIR')) # We need to do this in case we have a minimal SDK subprocess.check_output(". %s > /dev/null; devtool sdk-install meta-extsdk-toolchain" % \ @@ -179,6 +198,17 @@ def testsdkext_main(d): result.logDetails() result.logSummary(component, context_msg) + if (d.getVar('OEQA_SKIP_OUTPUT_JSON')) == '1': + bb.debug(2, 'Skip the OEQA output json testresult as OEQA_SKIP_OUTPUT_JSON=1') + else: + workdir = d.getVar("WORKDIR") + image_basename = d.getVar("IMAGE_BASENAME") + json_result_dir = os.path.join(workdir, + 'temp', + 'json_testresults-%s' % os.getpid(), + 'sdkext', + image_basename) + result.logDetailsInJson(json_result_dir) if not result.wasSuccessful(): fail = True @@ -194,3 +224,8 @@ python do_testsdkext() { addtask testsdkext do_testsdkext[nostamp] = "1" +python () { + if oe.types.boolean(d.getVar("TESTIMAGE_AUTO") or "False"): + bb.build.addtask("testsdk", None, "do_populate_sdk", d) + bb.build.addtask("testsdkext", None, "do_populate_sdk_ext", d) +} |