DPDK-dev Archive on lore.kernel.org
 help / color / mirror / Atom feed
From: Bruce Richardson <bruce.richardson@intel.com>
To: David Marchand <david.marchand@redhat.com>
Cc: <dev@dpdk.org>, Aaron Conole <aconole@redhat.com>
Subject: Re: [PATCH v2 9/9] ci: run reference binaries against current ABI
Date: Fri, 18 Sep 2026 16:41:53 +0100	[thread overview]
Message-ID: <aq1bwV3yNlXUZeHT@bricha3-mobl1.ger.corp.intel.com> (raw)
In-Reply-To: <20260723125559.3087579-10-david.marchand@redhat.com>

On Thu, Jul 23, 2026 at 02:55:58PM +0200, David Marchand wrote:
> 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.
> 
> We may need to skip unit tests that were added since the reference.
> So add a ABI_SKIP_TESTS environment variable in preparation.
> 
> Signed-off-by: David Marchand <david.marchand@redhat.com>
> ---
> 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,
> 
> ---

This is a good test to run. It's something I believe our internal
validation team does at times too. Some comments inline below, nothing
major though.

Acked-by: Bruce Richardson <bruce.richardson@intel.com>


>  .ci/linux-build.sh          | 33 ++++++++++++++++++++++++++++++---
>  .github/workflows/build.yml |  1 +
>  2 files changed, 31 insertions(+), 3 deletions(-)
> 
> diff --git a/.ci/linux-build.sh b/.ci/linux-build.sh
> index a5e602ed83..032f3726e8 100755
> --- a/.ci/linux-build.sh
> +++ b/.ci/linux-build.sh
> @@ -206,23 +206,33 @@ 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="
> -        REF_OPTS="$REF_OPTS -Dtests=false"

These changes should go in the previous patch, I think - certainly you can
drop the tests=false one, since it should be a no-op.

>          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
> +        cp $refsrcdir/build/app/dpdk-testpmd reference/usr/local/bin/dpdk-testpmd

At this point I'd suggest running "meson test --list --suite=fast-tests" to
get the list of available tests in the reference implementation.

>          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
> @@ -233,6 +243,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

As well as the ABI_SKIP_TESTS, you could automate the list by again running
"meson test --list --suite..." and then only running the tests in both
lists. [using "sort" and "uniq -d" perhaps?]

> +        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 c63a9a3982..5ee55f4d27 100644
> --- a/.github/workflows/build.yml
> +++ b/.github/workflows/build.yml
> @@ -39,6 +39,7 @@ jobs:
>      env:
>        AARCH64: ${{ matrix.config.cross == 'aarch64' }}
>        ABI_CHECKS: ${{ contains(matrix.config.checks, 'abi') }}
> +      ABI_SKIP_TESTS: none
>        ASAN: ${{ contains(matrix.config.checks, 'asan') }}
>        BUILD_32BIT: ${{ matrix.config.cross == 'i386' }}
>        BUILD_DEBUG: ${{ contains(matrix.config.checks, 'debug') }}
> -- 
> 2.54.0
> 

  reply	other threads:[~2026-09-18 15:42 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 [this message]
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   ` [PATCH v4 9/9] ci: run reference binaries against current ABI David Marchand
2026-09-22 10:03     ` 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=aq1bwV3yNlXUZeHT@bricha3-mobl1.ger.corp.intel.com \
    --to=bruce.richardson@intel.com \
    --cc=aconole@redhat.com \
    --cc=david.marchand@redhat.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