[PATCH 10/10] ci: run reference unit tests against ABI
David Marchand
david.marchand at redhat.com
Fri Jul 17 11:30:05 CEST 2026
Let's check if unit tests from the reference build can run with the
current release libraries/drivers.
This gives another level of ABI checking, like catching regressions on
experimental or internal ABI symbols that get promoted to stable.
Skip unit tests that were added since the reference (iow v26.03).
$ git diff v26.03..origin/main |
sed -ne 's/^[+]REGISTER_FAST_TEST(\([^,]*\).*$/\1/p' |
sort
af_packet_pmd_autotest
bpf_exec_wrong_flags_autotest
bpf_exec_wrong_nb_prog_arg_autotest
bpf_load_null_autotest
bpf_validate_autotest
eal_flags_pagesz_mem_autotest
feature_autotest
pcap_pmd_autotest
reassembly_autotest
As reported in https://bugs.dpdk.org/show_bug.cgi?id=1967, devargs
and vdev autotests are broken due to drivers ABI changes since
those unit tests are directly accessing internal objects.
FIXME: for now, use a branch of mine with backports on 26.03.
Signed-off-by: David Marchand <david.marchand at redhat.com>
---
.ci/linux-build.sh | 28 +++++++++++++++++++++++++---
.github/workflows/build.yml | 15 +++++++++++++--
2 files changed, 38 insertions(+), 5 deletions(-)
diff --git a/.ci/linux-build.sh b/.ci/linux-build.sh
index a5e602ed83..f4fb398cd9 100755
--- a/.ci/linux-build.sh
+++ b/.ci/linux-build.sh
@@ -200,23 +200,28 @@ if [ "$ABI_CHECKS" = "true" ]; then
rm -rf reference
fi
+ # FIXME: force regeneration in CI for this patch
+ if [ ! -e reference/usr/local/bin/dpdk-test ]; then
+ rm -rf reference
+ fi
+
if [ ! -d reference ]; then
REF_OPTS="$OPTS"
# We only care about the drivers and libs, disable developer checks and
# don't try to link apps.
REF_OPTS="$REF_OPTS -Dcheck_includes=false"
REF_OPTS="$REF_OPTS -Ddeveloper_mode=disabled"
- REF_OPTS="$REF_OPTS -Ddisable_apps=*"
+ REF_OPTS="$REF_OPTS -Denable_apps=test"
REF_OPTS="$REF_OPTS -Denable_docs=false"
REF_OPTS="$REF_OPTS -Dexamples="
- REF_OPTS="$REF_OPTS -Dtests=false"
refsrcdir=$(readlink -f $(pwd)/../dpdk-$REF_GIT_TAG)
git clone --single-branch -b "$REF_GIT_TAG" $REF_GIT_REPO $refsrcdir
meson setup $REF_OPTS $refsrcdir $refsrcdir/build
ninja -C $refsrcdir/build
DESTDIR=$(pwd)/reference meson install -C $refsrcdir/build
find reference/usr/local -name '*.a' -delete
- rm -rf reference/usr/local/bin
+ rm -rf reference/usr/local/bin/*
+ cp $refsrcdir/build/app/dpdk-test reference/usr/local/bin/dpdk-test
rm -rf reference/usr/local/share
echo $REF_GIT_TAG > reference/VERSION
fi
@@ -233,6 +238,23 @@ if [ "$RUN_TESTS" = "true" ]; then
catch_ubsan DPDK:fast-tests build/meson-logs/testlog.txt
check_traces
[ "$failed" != "true" ]
+
+ if [ "$ABI_CHECKS" = "true" ]; then
+ failed=
+ configure_coredump
+ mv -f build/app/dpdk-test build/app/dpdk-test.ori
+ cp reference/usr/local/bin/dpdk-test build/app/dpdk-test
+ for t in ${ABI_SKIP_TESTS}; do
+ DPDK_TEST_SKIP=${DPDK_TEST_SKIP+$DPDK_TEST_SKIP,}$t
+ done
+ sudo env DPDK_TEST_SKIP="$DPDK_TEST_SKIP" \
+ meson test -C build --suite fast-tests -t 3 --no-stdsplit --print-errorlogs || failed="true"
+ catch_coredump
+ catch_ubsan DPDK:fast-tests build/meson-logs/testlog.txt
+ check_traces
+ mv -f build/app/dpdk-test.ori build/app/dpdk-test
+ [ "$failed" != "true" ]
+ fi
fi
# Test examples compilation with an installed dpdk
diff --git a/.github/workflows/build.yml b/.github/workflows/build.yml
index f0ef39d34f..b311ee26f9 100644
--- a/.github/workflows/build.yml
+++ b/.github/workflows/build.yml
@@ -11,8 +11,9 @@ defaults:
env:
REF_GIT_BRANCH: main
- REF_GIT_REPO: https://github.com/DPDK/dpdk
- REF_GIT_TAG: v26.03
+ # FIXME
+ REF_GIT_REPO: https://github.com/david-marchand/dpdk
+ REF_GIT_TAG: 26.03
jobs:
checkpatch:
@@ -39,6 +40,16 @@ jobs:
env:
AARCH64: ${{ matrix.config.cross == 'aarch64' }}
ABI_CHECKS: ${{ contains(matrix.config.checks, 'abi') }}
+ ABI_SKIP_TESTS: |
+ af_packet_pmd_autotest
+ bpf_exec_wrong_flags_autotest
+ bpf_exec_wrong_nb_prog_arg_autotest
+ bpf_load_null_autotest
+ bpf_validate_autotest
+ eal_flags_pagesz_mem_autotest
+ feature_autotest
+ pcap_pmd_autotest
+ reassembly_autotest
ASAN: ${{ contains(matrix.config.checks, 'asan') }}
BUILD_32BIT: ${{ matrix.config.cross == 'i386' }}
BUILD_DEBUG: ${{ contains(matrix.config.checks, 'debug') }}
--
2.54.0
More information about the dev
mailing list