DPDK patches and discussions
 help / color / mirror / Atom feed
From: Bruce Richardson <bruce.richardson@intel.com>
To: Harry van Haaren <harry.van.haaren@intel.com>
Cc: dev@dpdk.org
Subject: Re: [dpdk-dev] [PATCH 2/2] meson: add tests app to build
Date: Mon, 18 Dec 2017 13:55:12 +0000	[thread overview]
Message-ID: <20171218135512.GB15444@bricha3-MOBL3.ger.corp.intel.com> (raw)
In-Reply-To: <1513598038-148115-3-git-send-email-harry.van.haaren@intel.com>

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@intel.com>
> ---

<snip>
> +
> +test_names = [
> +	'acl_autotest',
> +	'alarm_autotest',
> +	'atomic_autotest',
> +	'byteorder_autotest',
> +	'cmdline_autotest',
> +	'common_autotest',
> +	'cpuflags_autotest',
> +	'crc_autotest',
> +	'cycles_autotest',
> +	'debug_autotest',
> +	'devargs_autotest',
> +	'distributor_autotest',
> +	'distributor_perf_autotest',
> +	'eal_flags_autotest',
> +	'eal_fs_autotest',
> +	'efd_autotest',
> +	'efd_perf_autotest',
> +	'errno_autotest',
> +	'event_ring_autotest',
> +	'eventdev_common_autotest',
> +	'eventdev_octeontx_autotest',
> +	'eventdev_sw_autotest',
> +	'func_reentrancy_autotest',
> +	'has_scaling_autotest',
> +	'hash_autotest',
> +	'hash_functions_autotest',
> +	'hash_multiwriter_autotest',
> +	'hash_perf_autotest',
> +	'interrupt_autotest',
> +	'kni_autotest',
> +	'kvargs_autotest',
> +	'logs_autotest',
> +	'lpm6_autotest',
> +	'lpm6_perf_autotest',
> +	'lpm_autotest',
> +	'lpm_perf_autotest',
> +	'malloc_autotest',
> +	'mbuf_autotest',
> +	'memcpy_autotest',
> +	'memcpy_perf_autotest',
> +	'memory_autotest',
> +	'mempool_autotest',
> +	'mempool_perf_autotest',
> +	'memzone_autotest',
> +	'meter_autotest',
> +	'multiprocess_autotest',
> +	'per_lcore_autotest',
> +	'pmd_perf_autotest',
> +	'power_acpi_cpufreq_autotest',
> +	'power_autotest',
> +	'power_kvm_vm_autotest',
> +	'prefetch_autotest',
> +	'red_all',
> +	'red_autotest',
> +	'red_perf',
> +	'reorder_autotest',
> +	'ring_autotest',
> +	'ring_perf_autotest',
> +	'rwlock_autotest',
> +	'sched_autotest',
> +	'service_autotest',
> +	'spinlock_autotest',
> +	'table_autotest',
> +	'tailq_autotest',
> +	'thash_autotest',
> +	'timer_autotest',
> +	'timer_perf__autotest',
> +	'timer_racecond_autotest',
> +	'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?

> +
> +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.

> +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
> 

  reply	other threads:[~2017-12-18 13:55 UTC|newest]

Thread overview: 20+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2017-12-18 11:53 [dpdk-dev] [PATCH 0/2] next-build: add test " Harry van Haaren
2017-12-18 11:53 ` [dpdk-dev] [PATCH 1/2] test: use env variable to run test if set Harry van Haaren
2017-12-18 13:50   ` Bruce Richardson
2017-12-18 14:59   ` Jerin Jacob
2017-12-18 15:24     ` Van Haaren, Harry
2017-12-18 15:41       ` Jerin Jacob
2017-12-18 11:53 ` [dpdk-dev] [PATCH 2/2] meson: add tests app to build Harry van Haaren
2017-12-18 13:55   ` Bruce Richardson [this message]
2017-12-18 15:24     ` Van Haaren, Harry
2017-12-20 10:23   ` Bruce Richardson
2017-12-18 13:57 ` [dpdk-dev] [PATCH 0/2] next-build: add test " Bruce Richardson
2017-12-18 15:24   ` Van Haaren, Harry
2017-12-20 11:16 ` [dpdk-dev] [PATCH v2 " Harry van Haaren
2017-12-20 11:16   ` [dpdk-dev] [PATCH v2 1/2] test: use env variable to run test if set Harry van Haaren
2017-12-20 11:47     ` Bruce Richardson
2017-12-20 11:16   ` [dpdk-dev] [PATCH v2 2/2] meson: add tests app to build Harry van Haaren
2017-12-20 11:57     ` Laatz, Kevin
2017-12-20 12:00       ` Bruce Richardson
2017-12-20 12:20     ` Bruce Richardson
2017-12-20 12:22   ` [dpdk-dev] [PATCH v2 0/2] next-build: add test " Bruce Richardson

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=20171218135512.GB15444@bricha3-MOBL3.ger.corp.intel.com \
    --to=bruce.richardson@intel.com \
    --cc=dev@dpdk.org \
    --cc=harry.van.haaren@intel.com \
    /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).