[meta-networking] nftables: add ptest

Message ID 20220412151003.2340963-1-trevor.gamblin@windriver.com
State New
Headers show
Series [meta-networking] nftables: add ptest | expand

Commit Message

Trevor Gamblin April 12, 2022, 3:10 p.m. UTC
Note that (like for nftables itself), the ptests will require the
following added to local.conf (or the kernel configuration):

KERNEL_FEATURES:append = " features/nf_tables/nf_tables.scc"

Current pass/fail results:

I: results: [OK] 271 [FAILED] 29 [TOTAL] 300

I've been investigating the failing tests under the assumption that they
fail because of missing kernel modules, but there are some that suggest
syntax problems (possibly problems with the tests themselves). Example:

W: [FAILED]     ./tests/shell/testcases/listing/0020flowtable_0: got 1
/dev/stdin:2:12-12: Error: Could not process rule: No such file or
directory
        flowtable f {
                  ^
/dev/stdin:6:11-12: Error: Could not process rule: No such file or
directory
flowtable f2 {
          ^^

Signed-off-by: Trevor Gamblin <trevor.gamblin@windriver.com>
---
 .../nftables/nftables/run-ptest               |  2 ++
 .../recipes-filter/nftables/nftables_1.0.2.bb | 21 ++++++++++++++++++-
 2 files changed, 22 insertions(+), 1 deletion(-)
 create mode 100644 meta-networking/recipes-filter/nftables/nftables/run-ptest

Patch

diff --git a/meta-networking/recipes-filter/nftables/nftables/run-ptest b/meta-networking/recipes-filter/nftables/nftables/run-ptest
new file mode 100644
index 000000000..611b84485
--- /dev/null
+++ b/meta-networking/recipes-filter/nftables/nftables/run-ptest
@@ -0,0 +1,2 @@ 
+#!/bin/sh
+tests/shell/run-tests.sh -v
diff --git a/meta-networking/recipes-filter/nftables/nftables_1.0.2.bb b/meta-networking/recipes-filter/nftables/nftables_1.0.2.bb
index fd8e26ed1..e078be79a 100644
--- a/meta-networking/recipes-filter/nftables/nftables_1.0.2.bb
+++ b/meta-networking/recipes-filter/nftables/nftables_1.0.2.bb
@@ -11,11 +11,12 @@  UPSTREAM_CHECK_REGEX = "nftables-(?P<pver>\d+(\.\d+){2,}).tar.bz2"
 
 SRC_URI = "http://www.netfilter.org/projects/nftables/files/${BP}.tar.bz2 \
            file://0001-examples-compile-with-make-check-and-add-AM_CPPFLAGS.patch \
+           file://run-ptest \
           "
 
 SRC_URI[sha256sum] = "0b28a36ffcf4567b841de7bd3f37918b1fed27859eb48bdec51e1f7a83954c02"
 
-inherit autotools manpages pkgconfig
+inherit autotools manpages pkgconfig ptest
 
 PACKAGECONFIG ??= "python readline json"
 PACKAGECONFIG[json] = "--with-json, --without-json, jansson"
@@ -32,3 +33,21 @@  RRECOMMENDS:${PN} += "kernel-module-nf-tables"
 PACKAGES =+ "${PN}-python"
 FILES:${PN}-python = "${nonarch_libdir}/${PYTHON_DIR}"
 RDEPENDS:${PN}-python = "python3-core python3-json ${PN}"
+
+RDEPENDS:${PN}-ptest += " make bash python3-core python3-ctypes python3-json python3-misc util-linux"
+
+TESTDIR = "tests"
+
+PRIVATE_LIBS:${PN}-ptest:append = "libnftables.so.1"
+
+do_install_ptest() {
+    cp -rf ${S}/build-aux ${D}${PTEST_PATH}
+    cp -rf ${S}/src ${D}${PTEST_PATH}
+    mkdir -p ${D}${PTEST_PATH}/src/.libs
+    cp -rf ${B}/src/.libs/* ${D}${PTEST_PATH}/src/.libs
+    cp -rf ${B}/src/.libs/nft ${D}${PTEST_PATH}/src/
+    cp -rf ${S}/py ${D}${PTEST_PATH}
+    cp -rf ${S}/${TESTDIR} ${D}${PTEST_PATH}/${TESTDIR}
+    sed -i 's#/usr/bin/python#/usr/bin/python3#' ${D}${PTEST_PATH}/${TESTDIR}/json_echo/run-test.py
+    sed -i 's#/usr/bin/env python#/usr/bin/env python3#' ${D}${PTEST_PATH}/${TESTDIR}/py/nft-test.py
+}