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 <hof...@lysator.liu.se > >>> <mailto:hof...@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 > >>> <hof...@lysator.liu.se <mailto:hof...@lysator.liu.se> > >>> > <mailto:hof...@lysator.liu.se <mailto:hof...@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