From mboxrd@z Thu Jan 1 00:00:00 1970 From: "Van Haaren, Harry" Subject: Re: [PATCH 2/2] meson: add tests app to build Date: Mon, 18 Dec 2017 15:24:32 +0000 Message-ID: References: <1513598038-148115-1-git-send-email-harry.van.haaren@intel.com> <1513598038-148115-3-git-send-email-harry.van.haaren@intel.com> <20171218135512.GB15444@bricha3-MOBL3.ger.corp.intel.com> Mime-Version: 1.0 Content-Type: text/plain; charset="us-ascii" Content-Transfer-Encoding: quoted-printable Cc: "dev@dpdk.org" To: "Richardson, Bruce" Return-path: Received: from mga04.intel.com (mga04.intel.com [192.55.52.120]) by dpdk.org (Postfix) with ESMTP id 7293B1B00F for ; Mon, 18 Dec 2017 16:24:35 +0100 (CET) In-Reply-To: <20171218135512.GB15444@bricha3-MOBL3.ger.corp.intel.com> Content-Language: en-US List-Id: DPDK patches and discussions List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: dev-bounces@dpdk.org Sender: "dev" > From: Richardson, Bruce > Sent: Monday, December 18, 2017 1:55 PM > To: Van Haaren, Harry > Cc: dev@dpdk.org > Subject: Re: [PATCH 2/2] meson: add tests app to build >=20 > On Mon, Dec 18, 2017 at 11:53:58AM +0000, Harry van Haaren wrote: > > This patch enables the test/test app to be built. It also adds > > the test binary to be a meson-test, which allows the meson test > > infrastructure to be used to run tests. > > > > Tests are listed using the same test binary, however each test > > sets a different DPDK_TEST environment variable. The string contents > > of this DPDK_TEST env var is entered in the command line interface. > > As such, the familiar test names such as "ring_perf_autotest" etc > > are valid tests to run using this meson test infrastructure. > > > > Note that the tests are run serially, given that we cannot run > > multiple primary processes at a time. As each test must initialize > > EAL this takes some time depending on the number of hugepages. > > In future, we could improve this to run multiple tests from one > > EAL init, but it is out of scope for this patchset. > > > > Finally, an option to build the tests is added to the meson build > > options. When disabled, the unit test code in test/test is not > > compiled. The default is set to 'true'. To disable, run: > > > > $ meson configure -Dtests=3Dfalse > > > > Signed-off-by: Harry van Haaren > > --- >=20 > > > + > > +test_names =3D [ > > + 'acl_autotest', > > + 'alarm_autotest', > > + 'user_delay_us', > > + 'version_autotest', > > +] >=20 > I think we should find a way to remove this long list of test names in > the build file. The list of available tests is built up dynamically > inside the test binary, so I'm wondering if we can add to the binary an > "all" option to run each autotest straight after each other? Agree - it would be nice if we don't have to specify tests here. We could a= dd a flag the test binary, to output the tests that it contains? Then its a= bout having Meson read this file before running tests, to "gather" the test= s available.. There's options, but they will probably all be more complex than just havin= g a list of tests. Re Run all tests: Currently $ meson test will run all unit tests. > > + > > +if dpdk_conf.has('RTE_LIBRTE_PDUMP') > > + test_deps +=3D 'pdump' > > +endif > > +if dpdk_conf.has('RTE_LIBRTE_I40E_PMD') > > + test_deps +=3D 'pmd_i40e' > > +endif > > +if dpdk_conf.has('RTE_LIBRTE_IXGBE_PMD') > > + test_deps +=3D 'pmd_ixgbe' > > +endif > > + >=20 > This should be moved up beside the other dependencies >=20 > > +test_dep_objs =3D [] > > +foreach d:test_deps > > + def_lib =3D get_option('default_library') > > + test_dep_objs +=3D get_variable(def_lib + '_rte_' + d) > > +endforeach > > + > > +link_libs =3D [] > > +if get_option('default_library') =3D=3D 'static' > > + link_libs =3D dpdk_drivers > > +endif > > + >=20 > A note for the future: since much of this looks similar to that in > testpmd we should look to see if we can find a way to easily consolidate > these build commands inside a foreach loop like is done for the libs, > drivers and examples. +1, good idea for a cleanup later. Meson >=3D 0.44 has a "disabler" concept[1], which is a clean way to disabl= e components in the build if dependencies aren't found. Eg: specific tests = or sample apps, can be disabled from the build without the if() logic requi= red as below. [1] http://mesonbuild.com/Disabler.html > > +if get_option('tests') > > + dpdk_test =3D executable('dpdk-test', > > + test_sources, > > + link_whole: link_libs, > > + dependencies: test_dep_objs, > > + install_rpath: driver_install_path, > > + install: false) > > + > > + # some perf tests (eg: memcpy perf autotest)take very long > > + # to complete, so timeout to 10 minutes > > + timeout_seconds =3D 600 > > + > > + foreach t:test_names > > + test(t, dpdk_test, > > + env : ['DPDK_TEST=3D'+t], > > + timeout : timeout_seconds, > > + is_parallel : false) > > + endforeach > > +endif > > -- > > 2.7.4 > >