summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorRichard Purdie <richard.purdie@linuxfoundation.org>2018-06-18 11:33:12 +0000
committerRichard Purdie <richard.purdie@linuxfoundation.org>2018-06-21 00:16:49 +0100
commitb34d44f3dfea8254826a46701a4fe3769a900434 (patch)
treeaaec4b22cefbdce50051ca33704079db38b6c34d
parenta052caed563a09a01f5a3ea1f0477f379c05bee0 (diff)
downloadopenembedded-core-b34d44f3dfea8254826a46701a4fe3769a900434.tar.gz
image/testimage: Rework auto image test execution
The TEST_IMAGE interface has never particularly worked and image testing currently gets configured manually. This reworks the interface to better serve the needs of its users, replacing it with TESTIMAGE_AUTO. This does away with the need for the separate class due to better bitbake APIs for changing tasks. TESTIMAGE_AUTO will automatically boot under qemu any image that is built. It also adds in dependencies so that any SDK for which testing is requested will automatically be built first. The code in bitbake.conf was error prone (e.g. testsdk wasn't considered), this improves it to standardise on IMAGE_CLASSES as the standard configuration mechanism. Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
-rw-r--r--meta/classes/image.bbclass1
-rw-r--r--meta/classes/testimage-auto.bbclass23
-rw-r--r--meta/classes/testimage.bbclass10
-rw-r--r--meta/classes/testsdk.bbclass5
-rw-r--r--meta/conf/bitbake.conf2
-rw-r--r--meta/conf/documentation.conf2
-rw-r--r--meta/conf/local.conf.sample10
7 files changed, 22 insertions, 31 deletions
diff --git a/meta/classes/image.bbclass b/meta/classes/image.bbclass
index f056ca5970..8ef06c0fb0 100644
--- a/meta/classes/image.bbclass
+++ b/meta/classes/image.bbclass
@@ -13,7 +13,6 @@ IMGCLASSES += "${@['populate_sdk_base', 'populate_sdk_ext']['linux' in d.getVar(
IMGCLASSES += "${@bb.utils.contains_any('IMAGE_FSTYPES', 'live iso hddimg', 'image-live', '', d)}"
IMGCLASSES += "${@bb.utils.contains('IMAGE_FSTYPES', 'container', 'image-container', '', d)}"
IMGCLASSES += "image_types_wic"
-IMGCLASSES += "${@oe.utils.conditional('TEST_IMAGE', '1', 'testimage-auto', '', d)}"
IMGCLASSES += "rootfs-postcommands"
inherit ${IMGCLASSES}
diff --git a/meta/classes/testimage-auto.bbclass b/meta/classes/testimage-auto.bbclass
deleted file mode 100644
index e0a22b773c..0000000000
--- a/meta/classes/testimage-auto.bbclass
+++ /dev/null
@@ -1,23 +0,0 @@
-# Copyright (C) 2013 Intel Corporation
-#
-# Released under the MIT license (see COPYING.MIT)
-
-
-# Run tests automatically on an image after the image is constructed
-# (as opposed to testimage.bbclass alone where tests must be called
-# manually using bitbake -c testimage <image>).
-#
-# NOTE: to use this class, simply set TEST_IMAGE = "1" - no need to
-# inherit it since that will be done in image.bbclass when this variable
-# has been set.
-#
-# See testimage.bbclass for the test implementation.
-
-inherit testimage
-
-python do_testimage_auto() {
- testimage_main(d)
-}
-addtask testimage_auto before do_build after do_image_complete
-do_testimage_auto[depends] += "${TESTIMAGEDEPENDS}"
-do_testimage_auto[lockfiles] += "${TESTIMAGELOCK}"
diff --git a/meta/classes/testimage.bbclass b/meta/classes/testimage.bbclass
index c17a7c604b..eb2181309e 100644
--- a/meta/classes/testimage.bbclass
+++ b/meta/classes/testimage.bbclass
@@ -10,6 +10,11 @@
# - first add IMAGE_CLASSES += "testimage" in local.conf
# - build a qemu core-image-sato
# - then bitbake core-image-sato -c testimage. That will run a standard suite of tests.
+#
+# The tests can be run automatically each time an image is built if you set
+# TESTIMAGE_AUTO = "1"
+
+TESTIMAGE_AUTO ??= "0"
# You can set (or append to) TEST_SUITES in local.conf to select the tests
# which you want to run for your target.
@@ -382,4 +387,7 @@ def package_extraction(d, test_suites):
testimage_main[vardepsexclude] += "BB_ORIGENV DATETIME"
-inherit testsdk
+python () {
+ if oe.types.boolean(d.getVar("TESTIMAGE_AUTO") or "False"):
+ bb.build.addtask("testimage", "do_build", "do_image_complete", d)
+}
diff --git a/meta/classes/testsdk.bbclass b/meta/classes/testsdk.bbclass
index 2e43343643..dba6b0708a 100644
--- a/meta/classes/testsdk.bbclass
+++ b/meta/classes/testsdk.bbclass
@@ -194,3 +194,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)
+}
diff --git a/meta/conf/bitbake.conf b/meta/conf/bitbake.conf
index 3b2ef9fb47..c4dba61cc6 100644
--- a/meta/conf/bitbake.conf
+++ b/meta/conf/bitbake.conf
@@ -487,7 +487,7 @@ HOSTTOOLS += " \
"
# Tools needed to run testimage runtime image testing
-HOSTTOOLS += "${@'ip ping ps scp ssh stty' if (bb.data.inherits_class('testimage', d) or d.getVar('TEST_IMAGE') == '1') else ''}"
+HOSTTOOLS += "${@'ip ping ps scp ssh stty' if (bb.utils.contains_any('IMAGE_CLASSES', 'testimage testsdk', True, False, d)) else ''}"
# Link to these if present
HOSTTOOLS_NONFATAL += "aws ccache gcc-ar gpg ld.bfd ld.gold nc sftp socat ssh sudo"
diff --git a/meta/conf/documentation.conf b/meta/conf/documentation.conf
index 3189dd39b7..fc6d008807 100644
--- a/meta/conf/documentation.conf
+++ b/meta/conf/documentation.conf
@@ -415,7 +415,7 @@ TARGET_PREFIX[doc] = "The prefix for the cross-compile toolchain (e.g. arm-linux
TARGET_SYS[doc] = "The target system is comprised of TARGET_ARCH,TARGET_VENDOR and TARGET_OS."
TCLIBC[doc] = "Specifies C library (libc) variant to use during the build process. You can select 'baremetal', 'glibc' or 'musl'."
TCMODE[doc] = "Enables an external toolchain (where provided by an additional layer) if set to a value other than 'default'."
-TEST_IMAGE[doc] = "Enables test booting of virtual machine images under the QEMU emulator after any root filesystems are created and runs tests against those images."
+TESTIMAGE_AUTO[doc] = "Enables test booting of virtual machine images under the QEMU emulator after any root filesystems are created and runs tests against those images each time an image is built."
TEST_QEMUBOOT_TIMEOUT[doc] = "The time in seconds allowed for an image to boot before automated runtime tests begin to run against an image."
TEST_SUITES[doc] = "An ordered list of tests (modules) to run against an image when performing automated runtime testing."
TEST_POWERCONTROL_CMD[doc] = "For automated hardware testing, specifies the command to use to control the power of the target machine under test"
diff --git a/meta/conf/local.conf.sample b/meta/conf/local.conf.sample
index 17cdd7046e..1ac4156b90 100644
--- a/meta/conf/local.conf.sample
+++ b/meta/conf/local.conf.sample
@@ -135,10 +135,12 @@ USER_CLASSES ?= "buildstats image-mklibs image-prelink"
# Runtime testing of images
#
# The build system can test booting virtual machine images under qemu (an emulator)
-# after any root filesystems are created and run tests against those images. To
-# enable this uncomment this line. See classes/testimage(-auto).bbclass for
-# further details.
-#TEST_IMAGE = "1"
+# after any root filesystems are created and run tests against those images. It can also
+# run tests against any SDK that are built. To enable this uncomment these lines.
+# See classes/test{image,sdk}.bbclass for further details.
+#IMAGE_CLASSES += "testimage testsdk"
+#TESTIMAGE_AUTO_qemuall = "1"
+
#
# Interactive shell configuration
#