DPDK patches and discussions
 help / color / mirror / Atom feed
From: Bruce Richardson <bruce.richardson@intel.com>
To: Ferruh Yigit <ferruh.yigit@amd.com>
Cc: "Mattias Rönnblom" <hofors@lysator.liu.se>,
	"Patrick Robb" <probb@iol.unh.edu>, "dev@dpdk.org" <dev@dpdk.org>,
	"Mattias Rönnblom" <mattias.ronnblom@ericsson.com>
Subject: Re: Run unit tests with C++ too
Date: Wed, 1 May 2024 15:45:51 +0100	[thread overview]
Message-ID: <ZjJVnybt62e-xpB3@bricha3-mobl1.ger.corp.intel.com> (raw)
In-Reply-To: <7f3b67df-ffc2-461a-9985-8b42282deb50@amd.com>

On Wed, May 01, 2024 at 03:38:10PM +0100, Ferruh Yigit wrote:
> On 5/1/2024 3:14 PM, Mattias Rönnblom wrote:
> > On 2024-05-01 11:10, Ferruh Yigit wrote:
> >> On 4/30/2024 9:57 PM, Patrick Robb wrote:
> >>>
> >>>
> >>> On Tue, Apr 30, 2024 at 4:13 PM Mattias Rönnblom <hofors@lysator.liu.se
> >>> <mailto:hofors@lysator.liu.se>> wrote:
> >>>
> >>>      On 2024-04-30 15:52, Patrick Robb wrote:
> >>>      >
> >>>      >
> >>>      > On Sun, Apr 28, 2024 at 3:46 AM Mattias Rönnblom
> >>>      <hofors@lysator.liu.se <mailto:hofors@lysator.liu.se>
> >>>      > <mailto:hofors@lysator.liu.se <mailto:hofors@lysator.liu.se>>>
> >>> wrote:
> >>>      >
> >>>      >     It would be great if the unit test suite (app/test/*) was
> >>>      compiled (and
> >>>      >     run) using a C++ (C++11) compiler as well. At least, if
> >>> such is
> >>>      >     available.
> >>>      >
> >>>      >
> >>>      > Sure, the UNH Lab can try this.
> >>>      >
> >>>      >
> >>>      >     With the current state of affairs, header file macros or
> >>>      functions are
> >>>      >     not verified to be functional (or even valid) C++.
> >>>      >
> >>>      >     "C is a subset of C++", which was never true, is becoming
> >>> less and
> >>>      >     less so.
> >>>      >
> >>>      >     If all unit tests aren't valid C++, maybe one could start
> >>> with
> >>>      an "opt
> >>>      >     in" model.
> >>>      >
> >>>      >
> >>>      > Okay, so basically run the fast-test suite, record all that don't
> >>>      pass,
> >>>      > submit a bugzilla ticket stating which unit tests are not
> >>> valid on a
> >>>      > certain c++ compiler, then bring CI Testing online using the
> >>> valid
> >>>      > subset of fast-tests. This should work.
> >>>      >
> >>>
> >>>      Sounds good.
> >>>
> >>>      Just to be clear: the above includes extending the DPDK build
> >>> system to
> >>>      build the app/test/dpdk-test binary in two versions: one C and
> >>> one C++,
> >>>      so that anyone can run the C++ tests locally as well. Correct?
> >>>
> >>>
> >>> Okay, so now I am understanding this is not yet available. When I
> >>> responded this morning I was figuring that c++ compiler support was
> >>> available and I simply wasn't aware, and that we could quite easily set
> >>> cc={some c++ compiler}, meson would pick it up, and we would be able to
> >>> build DPDK and then run unit tests in this manner in CI testing.
> >>>
> >>> I didn't mean to suggest we would submit patches extending the build
> >>> system to this end. That's probably a little out of scope for what we
> >>> try to accomplish at the Community Lab.
> >>>
> >>> But if the aforementioned build system support is added, of course we
> >>> are willing to add that as a build environment for unit tests and report
> >>> those respective results.
> >>>   
> >>
> >> Does it have to be 'app/test/dpdk-test', why not build examples with C++?
> >>
> > 
> > The unit tests have the ability to test DPDK, which is exactly what we
> > want to do here. Such testing isn't limited to "compiles yes/no", but to
> > detect run-time (behavioral) issues, and properly report them.
> > 
> > This is especially important for cases where there is code only
> > exercised in C++ translation units (i.e., in #ifdef __cplusplus).
> > 
> 
> And Bruce highlighted that compile check is already covered.
> 
> Than I guess this work needs to be done in two steps,
> 1. Enable building dpdk-test (or all applications) with C++ in build
> system. And fix possible issues.
> 
> 2. Enable in dpdk-test C++ build and run in CI.
> 
> We need a volunteer for 1. before asking CI lab for 2.
> 

For testing with C++ we only need to cover code contained in header files.
Code for functions built into the DPDK .so or .a libraries will behave the
same way when called from C, C++ or any other language. It's the inline
functions in headers that will be compiled differently in C++ so we should
only look to those tests rather than trying to make the whole unit test
suite buildable via C++ IMHO.

/Bruce

      reply	other threads:[~2024-05-01 14:46 UTC|newest]

Thread overview: 12+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2024-04-28  7:46 Mattias Rönnblom
2024-04-29  8:01 ` Ferruh Yigit
2024-04-29 22:49   ` Tyler Retzlaff
2024-04-30 13:52 ` Patrick Robb
2024-04-30 18:01   ` Tyler Retzlaff
2024-04-30 20:13   ` Mattias Rönnblom
2024-04-30 20:57     ` Patrick Robb
2024-05-01  9:10       ` Ferruh Yigit
2024-05-01 10:15         ` Bruce Richardson
2024-05-01 14:14         ` Mattias Rönnblom
2024-05-01 14:38           ` Ferruh Yigit
2024-05-01 14:45             ` Bruce Richardson [this message]

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=ZjJVnybt62e-xpB3@bricha3-mobl1.ger.corp.intel.com \
    --to=bruce.richardson@intel.com \
    --cc=dev@dpdk.org \
    --cc=ferruh.yigit@amd.com \
    --cc=hofors@lysator.liu.se \
    --cc=mattias.ronnblom@ericsson.com \
    --cc=probb@iol.unh.edu \
    /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;
as well as URLs for NNTP newsgroup(s).