summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorMichal Wojcik <michal.wojcik@linaro.org>2022-10-14 15:29:41 +0200
committerKhem Raj <raj.khem@gmail.com>2022-11-03 10:09:11 -0700
commit4224316bf823028b367c72d3d46d12f5895c30ae (patch)
tree358283e8a440ea5de82fa04192fd41064a6359e1
parentc728c3f9168c8a4ed05163a51dd48ca1ad8ac21d (diff)
downloadmeta-clang-4224316bf823028b367c72d3d46d12f5895c30ae.tar.gz
bcc: Add ptest support
Use bcc cc and python test suites and parse their results in ptest form. Running whole suite on qemu may take up to 25 minutes, so running it with "ptest-runner -t 1800 bcc" is recommended. Signed-off-by: Michal Wojcik <michal.wojcik@linaro.org>
-rw-r--r--dynamic-layers/openembedded-layer/recipes-devtools/bcc/bcc/ptest_wrapper.sh16
-rw-r--r--dynamic-layers/openembedded-layer/recipes-devtools/bcc/bcc/run-ptest42
-rw-r--r--dynamic-layers/openembedded-layer/recipes-devtools/bcc/bcc_0.24.0.bb13
3 files changed, 70 insertions, 1 deletions
diff --git a/dynamic-layers/openembedded-layer/recipes-devtools/bcc/bcc/ptest_wrapper.sh b/dynamic-layers/openembedded-layer/recipes-devtools/bcc/bcc/ptest_wrapper.sh
new file mode 100644
index 0000000..92d0156
--- /dev/null
+++ b/dynamic-layers/openembedded-layer/recipes-devtools/bcc/bcc/ptest_wrapper.sh
@@ -0,0 +1,16 @@
1#!/bin/sh
2# Simple OE specific wrapper for bcc python tests
3
4name=$1
5kind=$2
6cmd=$3
7shift 3
8
9case $kind in
10 simple|sudo)
11 $cmd "$@"
12 ;;
13 *)
14 echo "Invalid kind $kind of test $name"
15 exit 1
16esac
diff --git a/dynamic-layers/openembedded-layer/recipes-devtools/bcc/bcc/run-ptest b/dynamic-layers/openembedded-layer/recipes-devtools/bcc/bcc/run-ptest
new file mode 100644
index 0000000..a27f697
--- /dev/null
+++ b/dynamic-layers/openembedded-layer/recipes-devtools/bcc/bcc/run-ptest
@@ -0,0 +1,42 @@
1#!/bin/sh
2
3cd tests || exit 1
4
5PASS_CNT=0
6FAIL_CNT=0
7FAILED=""
8
9print_test_result() {
10 if [ $? -eq 0 ]; then
11 echo PASS: "$1"
12 PASS_CNT=$((PASS_CNT + 1))
13 else
14 echo FAIL: "$1"
15 FAIL_CNT=$((FAIL_CNT + 1))
16 FAILED="$FAILED $1;"
17 fi
18}
19
20# Run CC tests, set IFS as test names have spaces
21IFS=$(printf '\n\t')
22for test_name in $(./cc/test_libbcc_no_libbpf --list-test-names-only); do
23 ./cc/test_libbcc_no_libbpf "$test_name" > /dev/null 2>&1
24 print_test_result "cc $test_name"
25done
26unset IFS
27
28# Run python tests, skip namespace tests as they currently don't work
29if cmake -DCMAKE_TESTING_ENABLED=ON -DTEST_WRAPPER="$(pwd)/ptest_wrapper.sh" python > /dev/null 2>&1; then
30 for test_name in $(awk -F '[( ]' '/^add_test/ && !/namespace/ {print $2}' CTestTestfile.cmake); do
31 ctest -Q -R "$test_name"
32 print_test_result "python $test_name"
33 done
34else
35 print_test_result "cmake error, couldn't start python tests"
36fi
37
38echo "#### bcc tests summary ####"
39echo "# TOTAL: $((PASS_CNT + FAIL_CNT))"
40echo "# PASS: $PASS_CNT"
41echo "# FAIL: $FAIL_CNT ($FAILED)"
42echo "###########################"
diff --git a/dynamic-layers/openembedded-layer/recipes-devtools/bcc/bcc_0.24.0.bb b/dynamic-layers/openembedded-layer/recipes-devtools/bcc/bcc_0.24.0.bb
index 2da1fc4..b24e153 100644
--- a/dynamic-layers/openembedded-layer/recipes-devtools/bcc/bcc_0.24.0.bb
+++ b/dynamic-layers/openembedded-layer/recipes-devtools/bcc/bcc_0.24.0.bb
@@ -3,7 +3,7 @@ HOMEPAGE = "https://github.com/iovisor/bcc"
3LICENSE = "Apache-2.0" 3LICENSE = "Apache-2.0"
4LIC_FILES_CHKSUM = "file://LICENSE.txt;md5=e3fc50a88d0a364313df4b21ef20c29e" 4LIC_FILES_CHKSUM = "file://LICENSE.txt;md5=e3fc50a88d0a364313df4b21ef20c29e"
5 5
6inherit cmake python3native manpages 6inherit cmake python3native manpages ptest
7 7
8DEPENDS += "bison-native \ 8DEPENDS += "bison-native \
9 flex-native \ 9 flex-native \
@@ -20,12 +20,15 @@ LUAJIT:powerpc64 = ""
20LUAJIT:riscv64 = "" 20LUAJIT:riscv64 = ""
21 21
22RDEPENDS:${PN} += "bash python3 python3-core python3-setuptools xz" 22RDEPENDS:${PN} += "bash python3 python3-core python3-setuptools xz"
23RDEPENDS:${PN}-ptest = "cmake python3 python3-distutils python3-netaddr python3-pyroute2"
23 24
24SRC_URI = "gitsm://github.com/iovisor/bcc;branch=master;protocol=https \ 25SRC_URI = "gitsm://github.com/iovisor/bcc;branch=master;protocol=https \
25 file://0001-python-CMakeLists.txt-Remove-check-for-host-etc-debi.patch \ 26 file://0001-python-CMakeLists.txt-Remove-check-for-host-etc-debi.patch \
26 file://0001-tools-trace.py-Fix-failing-to-exit.patch \ 27 file://0001-tools-trace.py-Fix-failing-to-exit.patch \
27 file://0001-CMakeLists.txt-override-the-PY_CMD_ESCAPED.patch \ 28 file://0001-CMakeLists.txt-override-the-PY_CMD_ESCAPED.patch \
28 file://0001-Vendor-just-enough-extra-headers-to-allow-libbpf-to-.patch \ 29 file://0001-Vendor-just-enough-extra-headers-to-allow-libbpf-to-.patch \
30 file://run-ptest \
31 file://ptest_wrapper.sh \
29 " 32 "
30 33
31SRCREV = "8f40d6f57a8d94e7aee74ce358572d34d31b4ed4" 34SRCREV = "8f40d6f57a8d94e7aee74ce358572d34d31b4ed4"
@@ -54,6 +57,14 @@ do_install:append() {
54 -i $(find ${D}${datadir}/${PN} -type f) 57 -i $(find ${D}${datadir}/${PN} -type f)
55} 58}
56 59
60do_install_ptest() {
61 install -d ${D}${PTEST_PATH}/tests/cc
62 install ${B}/tests/cc/test_libbcc_no_libbpf ${B}/tests/cc/libusdt_test_lib.so ${D}${PTEST_PATH}/tests/cc
63 cp -rf ${S}/tests/python ${D}${PTEST_PATH}/tests/python
64 install ${WORKDIR}/ptest_wrapper.sh ${D}${PTEST_PATH}/tests
65 install ${S}/examples/networking/simulation.py ${D}${PTEST_PATH}/tests/python
66}
67
57FILES:${PN} += "${PYTHON_SITEPACKAGES_DIR}" 68FILES:${PN} += "${PYTHON_SITEPACKAGES_DIR}"
58FILES:${PN}-doc += "${datadir}/${PN}/man" 69FILES:${PN}-doc += "${datadir}/${PN}/man"
59 70