diff mbox series

[meta-networking] openvpn: add ptest support

Message ID 20241120052933.2174895-1-jiaying.song.cn@windriver.com
State Accepted
Headers show
Series [meta-networking] openvpn: add ptest support | expand

Commit Message

Song, Jiaying (CN) Nov. 20, 2024, 5:29 a.m. UTC
From: Jiaying Song <jiaying.song.cn@windriver.com>

All test cases PASS.
Add openvpn to PTESTS_SLOW because test duration longer than 30s Below is parts of the run log:
[==========] xkey provider tests: Running 3 test(s).
[ RUN      ] xkey_provider_test_fetch
[       OK ] xkey_provider_test_fetch
[ RUN      ] xkey_provider_test_mgmt_sign_cb
[       OK ] xkey_provider_test_mgmt_sign_cb
[ RUN      ] xkey_provider_test_generic_sign_cb
[       OK ] xkey_provider_test_generic_sign_cb
[==========] xkey provider tests: 3 test(s) run.
[  PASSED  ] 3 test(s).
PASS: provider_testdriver

The files t_client.sh.in and t_cltsrv.sh were not added because they
require specific environment configuration files. It is recommended that
users configure these based on their environment before testing.

Since the recipe enables iproute2, the condition for t_net.sh based on
HAVE_SITNL is not met, so t_net.sh will not be included in the build.

Signed-off-by: Jiaying Song <jiaying.song.cn@windriver.com>
---
 .../ptest-packagelists-meta-networking.inc    |  1 +
 .../recipes-support/openvpn/openvpn/run-ptest |  5 ++
 .../recipes-support/openvpn/openvpn_2.6.12.bb | 48 ++++++++++++++++++-
 3 files changed, 52 insertions(+), 2 deletions(-)
 create mode 100644 meta-networking/recipes-support/openvpn/openvpn/run-ptest
diff mbox series

Patch

diff --git a/meta-networking/conf/include/ptest-packagelists-meta-networking.inc b/meta-networking/conf/include/ptest-packagelists-meta-networking.inc
index 7ec6f9063d..2197a06e74 100644
--- a/meta-networking/conf/include/ptest-packagelists-meta-networking.inc
+++ b/meta-networking/conf/include/ptest-packagelists-meta-networking.inc
@@ -25,6 +25,7 @@  PTESTS_FAST_META_NETWORKING = "\
 #    firewalld
 PTESTS_SLOW_META_NETWORKING = "\
     net-snmp \
+    openvpn \
 "
 
 PTESTS_PROBLEMS_META_NETWORKING = "\
diff --git a/meta-networking/recipes-support/openvpn/openvpn/run-ptest b/meta-networking/recipes-support/openvpn/openvpn/run-ptest
new file mode 100644
index 0000000000..5b187d9086
--- /dev/null
+++ b/meta-networking/recipes-support/openvpn/openvpn/run-ptest
@@ -0,0 +1,5 @@ 
+#!/bin/sh
+for x in `find ./ -name Makefile`;
+do
+	make -C `dirname ${x}` -k runtest-TESTS
+done
diff --git a/meta-networking/recipes-support/openvpn/openvpn_2.6.12.bb b/meta-networking/recipes-support/openvpn/openvpn_2.6.12.bb
index d81b8ce449..958eecb63a 100644
--- a/meta-networking/recipes-support/openvpn/openvpn_2.6.12.bb
+++ b/meta-networking/recipes-support/openvpn/openvpn_2.6.12.bb
@@ -3,13 +3,14 @@  HOMEPAGE = "https://openvpn.net/"
 SECTION = "net"
 LICENSE = "GPL-2.0-only"
 LIC_FILES_CHKSUM = "file://COPYING;md5=89196bacc47ed37a5b242a535661a049"
-DEPENDS = "lzo lz4 openssl iproute2 libcap-ng ${@bb.utils.contains('DISTRO_FEATURES', 'pam', 'libpam', '', d)}"
+DEPENDS = "lzo lz4 openssl iproute2 libcap-ng ${@bb.utils.contains('DISTRO_FEATURES', 'pam', 'libpam', '', d)} ${@bb.utils.contains('PTEST_ENABLED', '1', 'cmocka', '', d)} "
 
-inherit autotools systemd update-rc.d pkgconfig
+inherit autotools systemd update-rc.d pkgconfig ptest
 
 SRC_URI = "http://swupdate.openvpn.org/community/releases/${BP}.tar.gz \
            file://0001-configure.ac-eliminate-build-path-from-openvpn-versi.patch \
            file://openvpn \
+           file://run-ptest \
           "
 
 UPSTREAM_CHECK_URI = "https://openvpn.net/community-downloads"
@@ -42,6 +43,8 @@  PACKAGECONFIG ??= "${@bb.utils.filter('DISTRO_FEATURES', 'systemd', d)} \
 PACKAGECONFIG[systemd] = "--enable-systemd,--disable-systemd,systemd"
 PACKAGECONFIG[selinux] = "--enable-selinux,--disable-selinux,libselinux"
 
+RDEPENDS:${PN}-ptest:append = " make bash"
+
 do_install:append() {
     install -d ${D}/${sysconfdir}/init.d
     install -m 755 ${UNPACKDIR}/openvpn ${D}/${sysconfdir}/init.d
@@ -63,6 +66,47 @@  do_install:append() {
     install -d -m 710 ${D}/${localstatedir}/lib/openvpn
 }
 
+do_compile_ptest () {
+    for x in `find ${B}/tests/unit_tests -name Makefile -exec grep -l buildtest-TESTS {} \;`; do
+        dir=`dirname ${x}`
+        case $dir in
+            *example*)   
+                echo "Skipping directory: $dir"
+                ;;
+            *)           
+                oe_runmake -C ${dir} buildtest-TESTS
+                ;;
+        esac
+    done
+}
+
+do_install_ptest() {
+    for x in $(find ${B}/tests/unit_tests -name Makefile -exec grep -l buildtest-TESTS {} \;); do
+        dir=$(dirname ${x})
+
+        if [[ "$dir" == *example* ]]; then
+            continue
+        fi
+
+        target_dir="${D}/${PTEST_PATH}/unit_tests/$(basename ${dir})"
+        mkdir -p ${target_dir}
+        cp -f ${dir}/Makefile ${target_dir}/        
+        sed -i "s/^Makefile:/MM:/g" ${target_dir}/Makefile
+        sed -i 's/^#TESTS = $(am__EXEEXT_4)/TESTS = $(am__EXEEXT_4)/' ${target_dir}/Makefile
+
+        for testfile in $(find ${dir} -name "*testdriver"); do
+            cp -rf ${testfile} ${target_dir}/
+        done
+    done
+    sed -i 's|find ./|find ${PTEST_PATH}|g' ${D}${PTEST_PATH}/run-ptest
+    sed -i 's|${top_builddir}/src/openvpn|${sbindir}|g' ${S}/tests/t_lpback.sh
+    cp -f ${S}/tests/t_lpback.sh ${D}/${PTEST_PATH}
+    cp -f ${B}/tests/Makefile ${D}/${PTEST_PATH}
+    sed -i "s/^Makefile:/MM:/g" ${D}/${PTEST_PATH}/Makefile
+    sed -i "s/^test_scripts = t_client.sh t_lpback.sh t_cltsrv.sh/test_scripts = t_lpback.sh/g" ${D}/${PTEST_PATH}/Makefile
+    
+}
+
 PACKAGES =+ " ${PN}-sample "
 
 RRECOMMENDS:${PN} = "kernel-module-tun"