DPDK-dev Archive on lore.kernel.org
 help / color / mirror / Atom feed
From: David Marchand <david.marchand@redhat.com>
To: dev@dpdk.org
Cc: bruce.richardson@intel.com, Aaron Conole <aconole@redhat.com>
Subject: [PATCH v4 9/9] ci: run reference binaries against current ABI
Date: Tue, 22 Sep 2026 11:40:25 +0200	[thread overview]
Message-ID: <20260922094026.2636265-10-david.marchand@redhat.com> (raw)
In-Reply-To: <20260922094026.2636265-1-david.marchand@redhat.com>

Let's check if a testpmd and unit tests from a 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 without
providing an alias for existing users.

Automatically skip unit tests that did not exist in the reference build.

Signed-off-by: David Marchand <david.marchand@redhat.com>
---
Changes since v3:
- fixed support of newer meson version,
- updated commitlog,

Changes since v2:
- automated generation of the tests list,

Changes since v1:
- dropped hack, testing this patch can't be done in the CI now,
- emptied the excluded tests list,
- added test-null.sh,

---

 .ci/linux-build.sh | 36 ++++++++++++++++++++++++++++++++++--
 1 file changed, 34 insertions(+), 2 deletions(-)

diff --git a/.ci/linux-build.sh b/.ci/linux-build.sh
index c789111a79..0dea7b6b26 100755
--- a/.ci/linux-build.sh
+++ b/.ci/linux-build.sh
@@ -206,7 +206,7 @@ if [ "$ABI_CHECKS" = "true" ]; then
         # 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,test-pmd"
         REF_OPTS="$REF_OPTS -Denable_docs=false"
         REF_OPTS="$REF_OPTS -Dexamples="
         refsrcdir=$(readlink -f $(pwd)/../dpdk-$REF_GIT_TAG)
@@ -215,13 +215,27 @@ if [ "$ABI_CHECKS" = "true" ]; then
         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
+        meson introspect $refsrcdir/build --tests |
+            jq -r '.[] | select(.suite[] | contains("fast-tests")) | .name' |
+            sort > reference/tests.txt
+        cp $refsrcdir/build/app/dpdk-testpmd reference/usr/local/bin/dpdk-testpmd
         rm -rf reference/usr/local/share
         echo $REF_GIT_TAG > reference/VERSION
     fi
 
     DESTDIR=$(pwd)/install meson install -C build
     devtools/check-abi.sh reference install ${ABI_CHECKS_WARN_ONLY:-}
+
+    failed=
+    configure_coredump
+    mv -f build/app/dpdk-testpmd build/app/dpdk-testpmd.ori
+    cp reference/usr/local/bin/dpdk-testpmd build/app/dpdk-testpmd
+    devtools/test-null.sh || failed="true"
+    mv -f build/app/dpdk-testpmd.ori build/app/dpdk-testpmd
+    catch_coredump
+    [ "$failed" != "true" ]
 fi
 
 if [ "$RUN_TESTS" = "true" ]; then
@@ -232,6 +246,24 @@ 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
+        meson introspect build --tests |
+            jq -r '.[] | select(.suite[] | contains("fast-tests")) | .name' |
+            sort > build/tests.txt
+        DPDK_TEST_SKIP=$(grep -vxFf reference/tests.txt build/tests.txt | tr '\n' ',')
+        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
-- 
2.54.0


  parent reply	other threads:[~2026-09-22  9:41 UTC|newest]

Thread overview: 68+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2026-07-17  9:29 [PATCH 00/10] Limit usage of internal API in tests David Marchand
2026-07-17  9:29 ` [PATCH 01/10] bbdev: fix stats aggregation from queues David Marchand
2026-07-17 17:22   ` Chautru, Nicolas
2026-07-18  7:47     ` David Marchand
2026-07-17  9:29 ` [PATCH 02/10] bbdev: add per-queue statistics API David Marchand
2026-07-17  9:29 ` [PATCH 03/10] hash: fix GFNI stubs export David Marchand
2026-07-17  9:38   ` Bruce Richardson
2026-07-17  9:55   ` Konstantin Ananyev
2026-07-17  9:29 ` [PATCH 04/10] test: uninline helper for forking David Marchand
2026-07-17  9:39   ` Bruce Richardson
2026-07-17  9:30 ` [PATCH 05/10] test/bonding: get MAC address with public API David Marchand
2026-07-17  9:30 ` [PATCH 06/10] test/devargs: check driver presence " David Marchand
2026-07-17  9:55   ` Bruce Richardson
2026-07-17 10:08     ` David Marchand
2026-07-17 10:14       ` Bruce Richardson
2026-07-17 12:34         ` David Marchand
2026-07-17 12:56           ` Thomas Monjalon
2026-07-17  9:30 ` [PATCH 07/10] test/vdev: find device " David Marchand
2026-07-17  9:30 ` [PATCH 08/10] test: limit internal API usage David Marchand
2026-07-17  9:30 ` [PATCH 09/10] ci: make ABI reference generation faster David Marchand
2026-07-17  9:30 ` [PATCH 10/10] ci: run reference unit tests against ABI David Marchand
2026-07-17  9:35 ` [PATCH 00/10] Limit usage of internal API in tests David Marchand
2026-07-23 12:55 ` [PATCH v2 0/9] " David Marchand
2026-07-23 12:55   ` [PATCH v2 1/9] bbdev: add per-queue statistics API David Marchand
2026-09-18 15:29     ` Bruce Richardson
2026-07-23 12:55   ` [PATCH v2 2/9] hash: fix GFNI stubs export David Marchand
2026-07-23 12:55   ` [PATCH v2 3/9] test: uninline helper for forking David Marchand
2026-07-23 12:55   ` [PATCH v2 4/9] test/bonding: get MAC address with public API David Marchand
2026-07-23 13:30     ` Bruce Richardson
2026-07-23 12:55   ` [PATCH v2 5/9] test/devargs: rely on net null driver David Marchand
2026-07-23 13:31     ` Bruce Richardson
2026-07-23 12:55   ` [PATCH v2 6/9] test/vdev: find device with public API David Marchand
2026-09-18 15:30     ` Bruce Richardson
2026-07-23 12:55   ` [PATCH v2 7/9] test: limit internal API usage David Marchand
2026-07-23 13:33     ` Bruce Richardson
2026-07-23 15:04     ` Morten Brørup
2026-07-23 12:55   ` [PATCH v2 8/9] ci: make ABI reference generation faster David Marchand
2026-09-18 15:32     ` Bruce Richardson
2026-07-23 12:55   ` [PATCH v2 9/9] ci: run reference binaries against current ABI David Marchand
2026-09-18 15:41     ` Bruce Richardson
2026-09-21 11:47 ` [PATCH v3 0/9] Limit usage of internal API in tests David Marchand
2026-09-21 11:47   ` [PATCH v3 1/9] bbdev: add per-queue statistics API David Marchand
2026-09-21 11:47   ` [PATCH v3 2/9] hash: fix GFNI stubs export David Marchand
2026-09-21 11:47   ` [PATCH v3 3/9] test: uninline helper for forking David Marchand
2026-09-21 11:47   ` [PATCH v3 4/9] test/bonding: get MAC address with public API David Marchand
2026-09-21 11:47   ` [PATCH v3 5/9] test/devargs: rely on net null driver David Marchand
2026-09-21 16:38     ` Stephen Hemminger
2026-09-21 11:47   ` [PATCH v3 6/9] test/vdev: find device with public API David Marchand
2026-09-21 16:39     ` Stephen Hemminger
2026-09-21 11:47   ` [PATCH v3 7/9] test: limit internal API usage David Marchand
2026-09-21 11:47   ` [PATCH v3 8/9] ci: make ABI reference generation faster David Marchand
2026-09-21 11:47   ` [PATCH v3 9/9] ci: run reference binaries against current ABI David Marchand
2026-09-21 16:39     ` Stephen Hemminger
2026-09-22  7:38       ` David Marchand
2026-09-22  9:40 ` [PATCH v4 0/9] Limit usage of internal API in tests David Marchand
2026-09-22  9:40   ` [PATCH v4 1/9] bbdev: add per-queue statistics API David Marchand
2026-09-22  9:40   ` [PATCH v4 2/9] hash: fix GFNI stubs export David Marchand
2026-09-22  9:40   ` [PATCH v4 3/9] test: uninline helper for forking David Marchand
2026-09-22  9:40   ` [PATCH v4 4/9] test/bonding: get MAC address with public API David Marchand
2026-09-22  9:40   ` [PATCH v4 5/9] test/devargs: rely on net null driver David Marchand
2026-09-22  9:40   ` [PATCH v4 6/9] test/vdev: find device with public API David Marchand
2026-09-22  9:40   ` [PATCH v4 7/9] test: limit internal API usage David Marchand
2026-09-22  9:40   ` [PATCH v4 8/9] ci: make ABI reference generation faster David Marchand
2026-09-22  9:40   ` David Marchand [this message]
2026-09-22 10:03     ` [PATCH v4 9/9] ci: run reference binaries against current ABI Bruce Richardson
2026-09-29 13:38   ` [PATCH v4 0/9] Limit usage of internal API in tests David Marchand
2026-09-29 19:50   ` Stephen Hemminger
2026-09-30  7:32     ` David Marchand

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=20260922094026.2636265-10-david.marchand@redhat.com \
    --to=david.marchand@redhat.com \
    --cc=aconole@redhat.com \
    --cc=bruce.richardson@intel.com \
    --cc=dev@dpdk.org \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox