[dpdk-dev] [PATCH 2/2] meson: add tests app to build

Van Haaren, Harry harry.van.haaren at intel.com
Mon Dec 18 16:24:32 CET 2017


> From: Richardson, Bruce
> Sent: Monday, December 18, 2017 1:55 PM
> To: Van Haaren, Harry <harry.van.haaren at intel.com>
> Cc: dev at dpdk.org
> Subject: Re: [PATCH 2/2] meson: add tests app to build
> 
> 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=false
> >
> > Signed-off-by: Harry van Haaren <harry.van.haaren at intel.com>
> > ---
> 
> <snip>
> > +
> > +test_names = [
> > +	'acl_autotest',
> > +	'alarm_autotest',
<snip>
> > +	'user_delay_us',
> > +	'version_autotest',
> > +]
> 
> 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 add a flag the test binary, to output the tests that it contains? Then its about having Meson read this file before running tests, to "gather" the tests available..

There's options, but they will probably all be more complex than just having 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 += 'pdump'
> > +endif
> > +if dpdk_conf.has('RTE_LIBRTE_I40E_PMD')
> > +	test_deps += 'pmd_i40e'
> > +endif
> > +if dpdk_conf.has('RTE_LIBRTE_IXGBE_PMD')
> > +	test_deps += 'pmd_ixgbe'
> > +endif
> > +
> 
> This should be moved up beside the other dependencies
> 
> > +test_dep_objs = []
> > +foreach d:test_deps
> > +	def_lib = get_option('default_library')
> > +	test_dep_objs += get_variable(def_lib + '_rte_' + d)
> > +endforeach
> > +
> > +link_libs = []
> > +if get_option('default_library') == 'static'
> > +	link_libs = dpdk_drivers
> > +endif
> > +
> 
> 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 >= 0.44 has a "disabler" concept[1], which is a clean way to disable 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 required as below.

[1] http://mesonbuild.com/Disabler.html


> > +if get_option('tests')
> > +	dpdk_test = 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 = 600
> > +
> > +	foreach t:test_names
> > +		test(t, dpdk_test,
> > +			env : ['DPDK_TEST='+t],
> > +			timeout : timeout_seconds,
> > +			is_parallel : false)
> > +	endforeach
> > +endif
> > --
> > 2.7.4
> >


More information about the dev mailing list