summaryrefslogtreecommitdiffstats
path: root/meta/classes/testsdk.bbclass
diff options
context:
space:
mode:
Diffstat (limited to 'meta/classes/testsdk.bbclass')
-rw-r--r--meta/classes/testsdk.bbclass45
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)
+}