meta-networking-image-ptest: Add images to enable BBCLASSEXTEND parallel execution

In line with other layers like meta-oe, meta-python add capability to
run recipe ptests

Signed-off-by: Khem Raj <raj.khem@gmail.com>
This commit is contained in:
Khem Raj 2024-02-22 18:59:42 -08:00
parent e886090d9a
commit b757ba3028
4 changed files with 106 additions and 0 deletions

View File

@ -0,0 +1,36 @@
#
# Lists of the ptest in meta-networking, sorted into two sets by the time they take
# Please keep these sorted in alphabetical order
#
# A first pass at getting all meta-networking recipes which inherit ptest
# meta_networking_ptest_recipes=$(bitbake-layers show-recipes --recipes-only --layer meta-networking --inherits ptest --bare | sed -e '1,/=== Matching recipes: ===/d')
# ptests which take less than ~30s each
PTESTS_FAST_META_NETWORKING = "\
geoip \
libcoap \
libldb \
libnftnl \
libtalloc \
libtdb \
lldpd \
mbedtls \
tcpdump \
"
PTESTS_SLOW_META_NETWORKING = "\
firewalld \
net-snmp \
"
PTESTS_PROBLEMS_META_NETWORKING = "\
freediameter \
geoip-perl \
libtevent \
lksctp-tools \
nftables \
openhpi \
openl2tp \
python3-scapy \
squid \
"

View File

@ -0,0 +1,25 @@
DESCRIPTION = "Recipe to trigger execution of all meta-networking ptest images."
HOMEPAGE = "https://www.openembedded.org/"
LICENSE = "MIT"
inherit features_check nopackages
REQUIRED_DISTRO_FEATURES = "ptest"
require conf/include/ptest-packagelists-meta-networking.inc
# Include the full set of ptests
PTESTS_META_NETWORKING = "${PTESTS_FAST_META_NETWORKING} ${PTESTS_SLOW_META_NETWORKING} ${PTESTS_PROBLEMS_META_NETWORKING}"
do_testimage[noexec] = "1"
do_testimage[depends] = "${@' '.join(['meta-networking-image-ptest-'+x+':do_testimage' for x in d.getVar('PTESTS_META_NETWORKING').split()])}"
do_build[depends] = "${@' '.join(['meta-networking-image-ptest-'+x+':do_build' for x in d.getVar('PTESTS_META_NETWORKING').split()])}"
# normally image.bbclass would do this
EXCLUDE_FROM_WORLD = "1"
python () {
if bb.utils.contains('IMAGE_CLASSES', 'testimage', True, False, d):
bb.build.addtask("do_testimage", "", "", d)
}

View File

@ -0,0 +1,5 @@
require meta-networking-image-ptest-all.bb
DESCRIPTION = "Recipe to trigger execution of all fast meta-networking ptest images."
PTESTS_META_NETWORKING = "${PTESTS_FAST_META_NETWORKING}"

View File

@ -0,0 +1,40 @@
inherit features_check
REQUIRED_DISTRO_FEATURES = "ptest"
require recipes-core/images/core-image-minimal.bb
require conf/include/ptest-packagelists-meta-networking.inc
SUMMARY = "meta-networking ptest test image"
DESCRIPTION += "Also including the ${MCNAME} ptest package."
HOMEPAGE = "https://www.openembedded.org/"
PTESTS_META_NETWORKING = "${PTESTS_SLOW_META_NETWORKING} ${PTESTS_FAST_META_NETWORKING} ${PTESTS_PROBLEMS_META_NETWORKING}"
IMAGE_INSTALL:append = " ${MCNAME}-ptest openssh"
BBCLASSEXTEND = "${@' '.join(['mcextend:'+x for x in d.getVar('PTESTS_META_NETWORKING').split()])}"
# The image can be sufficiently large (~1.8GB) that we need to be careful that it fits in a live
# image (which has a 4GB limit), so nullify the overhead factor (1.3x out of the
# box) and explicitly add up to 1500MB.
IMAGE_OVERHEAD_FACTOR = "1.0"
IMAGE_ROOTFS_EXTRA_SPACE = "324288"
# If a particular ptest needs more space, it can be customized:
#IMAGE_ROOTFS_EXTRA_SPACE:virtclass-mcextend-<pn> = "1024288"
# ptests need more memory than standard to avoid the OOM killer
QB_MEM = "-m 1024"
# If a particular ptest needs more memroy, it can be customized:
#QB_MEM:virtclass-mcextend-<pn> = "-m 4096"
TEST_SUITES = "ping ssh parselogs ptest"
# Sadly at the moment the full set of ptests is not robust enough and sporadically fails in random places
PTEST_EXPECT_FAILURE = "1"
python () {
if not d.getVar("MCNAME"):
raise bb.parse.SkipRecipe("No class extension set")
}