summaryrefslogtreecommitdiffstats
path: root/meta/recipes-core/images
diff options
context:
space:
mode:
authorRichard Purdie <richard.purdie@linuxfoundation.org>2023-03-09 22:00:08 +0000
committerRichard Purdie <richard.purdie@linuxfoundation.org>2023-03-14 07:17:47 +0000
commit5850561b05bd5bd16b2d02d0c4c4efc705543139 (patch)
treefde840b2f88100480440b26217ef3cc3eb04e7de /meta/recipes-core/images
parentf84c07deeb22ef1608e55196e7a8727ac0970d33 (diff)
downloadpoky-5850561b05bd5bd16b2d02d0c4c4efc705543139.tar.gz
core-image-ptest: Switch to BBCLASSEXTEND parallel execution
Replace the two images where tests are run serially with an image per ptest in the form core-image-ptest-XXX using class extensions. The original two images are then replaced with dependencies on these images. This allows parallel execution of the tests. The downside to this approach is the parsing time of an image generating this number of class extensions is slow but making it easier to execute and collect test data should outweigh that. A useful advantage is that the dependencies of each ptest package are checked/tested indvidually. (From OE-Core rev: f3f63ff01971df7d67213a7e7b1294489a5d3c0f) Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
Diffstat (limited to 'meta/recipes-core/images')
-rw-r--r--meta/recipes-core/images/core-image-ptest-all.bb34
-rw-r--r--meta/recipes-core/images/core-image-ptest-fast.bb24
-rw-r--r--meta/recipes-core/images/core-image-ptest.bb39
3 files changed, 59 insertions, 38 deletions
diff --git a/meta/recipes-core/images/core-image-ptest-all.bb b/meta/recipes-core/images/core-image-ptest-all.bb
index 1472451675..81c9b2d68a 100644
--- a/meta/recipes-core/images/core-image-ptest-all.bb
+++ b/meta/recipes-core/images/core-image-ptest-all.bb
@@ -1,25 +1,25 @@
1inherit features_check 1DESCRIPTION = "Recipe to trigger execution of all ptest images."
2HOMEPAGE = "https://www.yoctoproject.org/"
3
4LICENSE = "MIT"
5
6inherit features_check nopackages
2REQUIRED_DISTRO_FEATURES = "ptest" 7REQUIRED_DISTRO_FEATURES = "ptest"
3 8
4require core-image-minimal.bb
5require conf/distro/include/ptest-packagelists.inc 9require conf/distro/include/ptest-packagelists.inc
6 10
7DESCRIPTION += "Also includes ptest packages."
8HOMEPAGE = "https://www.yoctoproject.org/"
9
10# Include the full set of ptests 11# Include the full set of ptests
11IMAGE_INSTALL += "${PTESTS_FAST} ${PTESTS_SLOW}" 12PTESTS = "${PTESTS_FAST} ${PTESTS_SLOW}"
13
14do_testimage[noexec] = "1"
15do_testimage[depends] = "${@' '.join(['core-image-ptest-'+x.replace('-ptest', '')+':do_testimage' for x in d.getVar('PTESTS').split()])}"
12 16
13# This image is sufficiently large (~1.8GB) that we need to be careful that it fits in a live 17do_build[depends] = "${@' '.join(['core-image-ptest-'+x.replace('-ptest', '')+':do_build' for x in d.getVar('PTESTS').split()])}"
14# image (which has a 4GB limit), so nullify the overhead factor (1.3x out of the
15# box) and explicitly add just 1100MB.
16# strace-ptest in particular needs more than 500MB
17IMAGE_OVERHEAD_FACTOR = "1.0"
18IMAGE_ROOTFS_EXTRA_SPACE = "1124288"
19 18
20# ptests need more memory than standard to avoid the OOM killer 19# normally image.bbclass would do this
21# also lttng-tools needs /tmp that has at least 2G 20EXCLUDE_FROM_WORLD = "1"
22QB_MEM = "-m 4096"
23 21
24# Sadly at the moment the full set of ptests is not robust enough and sporadically fails in random places 22python () {
25PTEST_EXPECT_FAILURE = "1" 23 if bb.utils.contains('IMAGE_CLASSES', 'testimage', True, False, d):
24 bb.build.addtask("do_testimage", "", "", d)
25}
diff --git a/meta/recipes-core/images/core-image-ptest-fast.bb b/meta/recipes-core/images/core-image-ptest-fast.bb
index 40df274c4c..e768afb302 100644
--- a/meta/recipes-core/images/core-image-ptest-fast.bb
+++ b/meta/recipes-core/images/core-image-ptest-fast.bb
@@ -1,24 +1,6 @@
1inherit features_check 1require core-image-ptest-all.bb
2REQUIRED_DISTRO_FEATURES = "ptest"
3 2
4require core-image-minimal.bb 3DESCRIPTION = "Recipe to trigger execution of all fast ptest images."
5require conf/distro/include/ptest-packagelists.inc
6 4
7# Include only fast (< 30 sec) ptests 5PTESTS = "${PTESTS_FAST}"
8IMAGE_INSTALL += "${PTESTS_FAST}"
9 6
10DESCRIPTION += "Also includes ptest packages with fast execution times to allow for more automated QA."
11HOMEPAGE = "https://www.yoctoproject.org/"
12
13# This image is sufficiently large (~1.8GB) that it can't actually fit in a live
14# image (which has a 4GB limit), so nullify the overhead factor (1.3x out of the
15# box) and explicitly add just 1500MB.
16# strace-ptest in particular needs more than 500MB
17IMAGE_OVERHEAD_FACTOR = "1.0"
18IMAGE_ROOTFS_EXTRA_SPACE = "1524288"
19
20# ptests need more memory than standard to avoid the OOM killer
21QB_MEM = "-m 1024"
22
23# Sadly at the moment the fast set of ptests is not robust enough and sporadically fails in a couple of places
24PTEST_EXPECT_FAILURE = "1"
diff --git a/meta/recipes-core/images/core-image-ptest.bb b/meta/recipes-core/images/core-image-ptest.bb
new file mode 100644
index 0000000000..0c67943b05
--- /dev/null
+++ b/meta/recipes-core/images/core-image-ptest.bb
@@ -0,0 +1,39 @@
1inherit features_check
2REQUIRED_DISTRO_FEATURES = "ptest"
3
4require core-image-minimal.bb
5require conf/distro/include/ptest-packagelists.inc
6
7DESCRIPTION += "Also including the ${MCNAME} ptest package."
8HOMEPAGE = "https://www.yoctoproject.org/"
9
10PTESTS = "${PTESTS_SLOW} ${PTESTS_FAST}"
11
12IMAGE_INSTALL:append = " ${MCNAME}-ptest openssh"
13
14BBCLASSEXTEND = "${@' '.join(['mcextend:'+x.replace('-ptest', '') for x in d.getVar('PTESTS').split()])}"
15
16# The image can sufficiently large (~1.8GB) that we need to be careful that it fits in a live
17# image (which has a 4GB limit), so nullify the overhead factor (1.3x out of the
18# box) and explicitly add up to 1500MB.
19# strace-ptest in particular needs more than 500MB
20IMAGE_OVERHEAD_FACTOR = "1.0"
21IMAGE_ROOTFS_EXTRA_SPACE = "324288"
22IMAGE_ROOTFS_EXTRA_SPACE:virtclass-mcextend-strace = "1024288"
23IMAGE_ROOTFS_EXTRA_SPACE:virtclass-mcextend-lttng-tools = "1524288"
24
25# ptests need more memory than standard to avoid the OOM killer
26QB_MEM = "-m 1024"
27QB_MEM:virtclass-mcextend-lttng-tools = "-m 4096"
28QB_MEM:virtclass-mcextend-python3-cryptography = "-m 4096"
29
30TEST_SUITES = "ping ssh parselogs ptest"
31
32# Sadly at the moment the full set of ptests is not robust enough and sporadically fails in random places
33PTEST_EXPECT_FAILURE = "1"
34
35python () {
36 if not d.getVar("MCNAME"):
37 raise bb.parse.SkipRecipe("No class extension set")
38}
39