@@ -64,6 +64,7 @@ PTESTS_FAST = "\
libxslt \
libyaml \
logrotate \
+ lttng-ust \
lua \
lzo \
m4 \
new file mode 100644
@@ -0,0 +1,31 @@
+#!/bin/sh
+
+PTEST_PATH=$(dirname "$0")
+cd "$PTEST_PATH/tests" || exit 1
+
+export UST_TESTS_SRCDIR="$PTEST_PATH/tests"
+export UST_TESTS_BUILDDIR="$PTEST_PATH/tests"
+
+TESTS="
+unit/libringbuffer/test_shm
+unit/gcc-weak-hidden/test_gcc_weak_hidden
+unit/libcommon/test_get_cpu_mask_from_sysfs
+unit/libcommon/test_get_max_cpuid_from_mask
+unit/libcommon/test_get_max_cpuid_from_sysfs
+unit/libcommon/test_get_possible_cpus_array_len
+unit/libmsgpack/test_msgpack
+unit/pthread_name/test_pthread_name
+unit/snprintf/test_snprintf
+unit/ust-elf/test_ust_elf
+unit/ust-error/test_ust_error
+unit/ust-utils/test_ust_utils
+"
+
+for test in $TESTS; do
+ [ -x "$test" ] || continue
+ if ( cd "$(dirname "$test")" && ./"$(basename "$test")" ); then
+ echo "PASS: $test"
+ else
+ echo "FAIL: $test"
+ fi
+done
@@ -13,7 +13,7 @@ PYTHON_OPTION = "am_cv_python_pyexecdir='${PYTHON_SITEPACKAGES_DIR}' \
# lttng-ust publishes bugfix/security-only releases on its per-minor
# stable-X.Y branches, the same upstream and release model as lttng-tools.
-inherit autotools lib_package manpages python3native pkgconfig upstream-stable-release-point
+inherit autotools lib_package manpages python3native pkgconfig upstream-stable-release-point ptest
include lttng-platforms.inc
@@ -33,6 +33,7 @@ PE = "2"
SRC_URI = "https://lttng.org/files/lttng-ust/lttng-ust-${PV}.tar.bz2 \
file://0001-python-lttngust-Makefile.am-Add-install-lib-to-setup.patch \
file://0001-lttng-ust-common-link-with-liburcu-explicitly.patch \
+ file://run-ptest \
"
SRC_URI[sha256sum] = "1e84e02fa1fc1261eb6cf3d14d64006506a29f7c605ac85de02180318c6aa38a"
@@ -52,3 +53,58 @@ do_install:append() {
# still refer to Python 2 in the shebang
sed -i -e '1s,#!.*python.*,#!${bindir}/python3,' ${D}${bindir}/lttng-gen-tp
}
+
+RDEPENDS:${PN}-ptest += "bash liburcu"
+
+INHIBIT_PACKAGE_STRIP_FILES = "\
+ ${PKGD}${PTEST_PATH}/tests/unit/ust-elf/data/x86_64/main.elf \
+ ${PKGD}${PTEST_PATH}/tests/unit/ust-elf/data/x86_64/main.elf.debug \
+ ${PKGD}${PTEST_PATH}/tests/unit/ust-elf/data/x86/main.elf \
+ ${PKGD}${PTEST_PATH}/tests/unit/ust-elf/data/x86/main.elf.debug \
+ ${PKGD}${PTEST_PATH}/tests/unit/ust-elf/data/armeb/main.elf \
+ ${PKGD}${PTEST_PATH}/tests/unit/ust-elf/data/armeb/main.elf.debug \
+ ${PKGD}${PTEST_PATH}/tests/unit/ust-elf/data/aarch64_be/main.elf \
+ ${PKGD}${PTEST_PATH}/tests/unit/ust-elf/data/aarch64_be/main.elf.debug \
+ ${PKGD}${PTEST_PATH}/tests/unit/ust-elf/data/pic/hello.exec \
+ ${PKGD}${PTEST_PATH}/tests/unit/ust-elf/data/pic/hello.pic \
+ ${PKGD}${PTEST_PATH}/tests/unit/ust-elf/data/pic/hello.pie \
+"
+
+INSANE_SKIP:${PN}-ptest += "arch ldflags buildpaths"
+SKIP_FILEDEPS:${PN}-ptest = "1"
+
+LTTNG_UST_PTEST_DIRS = " \
+ unit/libringbuffer \
+ unit/gcc-weak-hidden \
+ unit/libcommon \
+ unit/libmsgpack \
+ unit/pthread_name \
+ unit/snprintf \
+ unit/ust-elf \
+ unit/ust-error \
+ unit/ust-utils \
+"
+
+do_compile_ptest() {
+ for d in ${LTTNG_UST_PTEST_DIRS}; do
+ oe_runmake -C ${B}/tests/$d check TESTS=
+ done
+}
+
+do_install_ptest() {
+ install -d ${D}${PTEST_PATH}/tests/utils
+ install -m 0644 ${S}/tests/utils/tap.sh ${S}/tests/utils/utils.sh ${D}${PTEST_PATH}/tests/utils/
+
+ for d in ${LTTNG_UST_PTEST_DIRS}; do
+ mf=${B}/tests/$d/Makefile
+ install -d ${D}${PTEST_PATH}/tests/$d
+ for p in $(makefile-getvar $mf noinst_PROGRAMS); do
+ ${B}/libtool --mode=install install -m 0755 ${B}/tests/$d/$p ${D}${PTEST_PATH}/tests/$d/
+ done
+ for s in $(makefile-getvar $mf dist_noinst_SCRIPTS dist_check_SCRIPTS); do
+ install -m 0755 ${S}/tests/$d/$s ${D}${PTEST_PATH}/tests/$d/
+ done
+ done
+
+ cp -R --preserve=mode ${S}/tests/unit/ust-elf/data ${D}${PTEST_PATH}/tests/unit/ust-elf/
+}
Build and run the lttng-ust unit test suite under ptest, modelled on the liburcu ptest support: the run-ptest script executes each TAP test from the tests/unit subdirectories and reports PASS/FAIL. The compile tests, benchmarks and the abi0-conflict regression test (unstable under QEMU) are excluded. The ust-elf test ships prebuilt, intentionally foreign-architecture ELF fixtures, so they are kept from being stripped and the related QA checks are relaxed for the ptest package. Tested on qemuriscv64 with ptest-runner. Signed-off-by: Pratik Farkase <pratik.farkase@est.tech> --- .../distro/include/ptest-packagelists.inc | 1 + meta/recipes-kernel/lttng/lttng-ust/run-ptest | 31 ++++++++++ meta/recipes-kernel/lttng/lttng-ust_2.16.0.bb | 58 ++++++++++++++++++- 3 files changed, 89 insertions(+), 1 deletion(-) create mode 100644 meta/recipes-kernel/lttng/lttng-ust/run-ptest