<snip>

> 
> Cores count has a direct impact on the time needed to complete unit tests.
We also need to control the number of iterations with in the tests.

We could add something like "-i low/medium/high". The test cases then can use 
this to decide on how many iterations to run.

> 
> Currently, the core list used for unit test is enforced to "all cores on the
> system" with no way for (CI) users to adapt it.
> On the other hand, EAL default behavior (when no -c/-l option gets passed) is
> to start threads on as many cores available in the process cpu affinity.
> 
> Remove logic from meson: users can then select where to run the tests by
> either running meson with a custom cpu affinity (using taskset/cpuset
> depending on OS) or by passing a --test-args option to meson.
> 
> Example:
> $ sudo meson test -C build --suite fast-tests -t 3 --test-args "-l 0-3"
> 
> Signed-off-by: David Marchand <david.march...@redhat.com>
> ---
> Changes since v1:
> - updated documentation,
> 
> ---
>  app/test/get-coremask.sh           | 13 -------------
>  app/test/meson.build               | 10 +---------
>  doc/guides/prog_guide/meson_ut.rst | 17 ++++++++++++++++-
>  3 files changed, 17 insertions(+), 23 deletions(-)  delete mode 100755
> app/test/get-coremask.sh
> 
> diff --git a/app/test/get-coremask.sh b/app/test/get-coremask.sh deleted file
> mode 100755 index bb8cf404d2..0000000000
> --- a/app/test/get-coremask.sh
> +++ /dev/null
> @@ -1,13 +0,0 @@
> -#! /bin/sh -e
> -# SPDX-License-Identifier: BSD-3-Clause -# Copyright(c) 2019 Intel
> Corporation
> -
> -if [ "$(uname)" = "Linux" ] ; then
> -     cat /sys/devices/system/cpu/present
> -elif [ "$(uname)" = "FreeBSD" ] ; then
> -     ncpus=$(/sbin/sysctl -n hw.ncpu)
> -     echo 0-$(expr $ncpus - 1)
> -else
> -# fallback
> -     echo 0-3
> -fi
> diff --git a/app/test/meson.build b/app/test/meson.build index
> a16374b7a1..c7b377d52d 100644
> --- a/app/test/meson.build
> +++ b/app/test/meson.build
> @@ -463,13 +463,8 @@ message('hugepage availability:
> @0@'.format(has_hugepage))  timeout_seconds = 600  timeout_seconds_fast
> = 10
> 
> -get_coremask = find_program('get-coremask.sh') -num_cores_arg = '-l ' +
> run_command(get_coremask).stdout().strip()
> -
> -default_test_args = [num_cores_arg]
> -
>  foreach arg : fast_tests
> -    test_args = default_test_args
> +    test_args = []
>      run_test = true
>      if not has_hugepage
>          if arg[1]
> @@ -502,7 +497,6 @@ endforeach
>  foreach arg : perf_test_names
>      test(arg, dpdk_test,
>              env : ['DPDK_TEST=' + arg],
> -            args : default_test_args,
>              timeout : timeout_seconds,
>              is_parallel : false,
>              suite : 'perf-tests')
> @@ -511,7 +505,6 @@ endforeach
>  foreach arg : driver_test_names
>      test(arg, dpdk_test,
>              env : ['DPDK_TEST=' + arg],
> -            args : default_test_args,
>              timeout : timeout_seconds,
>              is_parallel : false,
>              suite : 'driver-tests')
> @@ -520,7 +513,6 @@ endforeach
>  foreach arg : dump_test_names
>      test(arg, dpdk_test,
>              env : ['DPDK_TEST=' + arg],
> -            args : default_test_args,
>              timeout : timeout_seconds,
>              is_parallel : false,
>              suite : 'debug-tests')
> diff --git a/doc/guides/prog_guide/meson_ut.rst
> b/doc/guides/prog_guide/meson_ut.rst
> index fff88655dd..78cf3f845c 100644
> --- a/doc/guides/prog_guide/meson_ut.rst
> +++ b/doc/guides/prog_guide/meson_ut.rst
> @@ -37,6 +37,14 @@ command::
> 
>      $ meson test --suite fast-tests
> 
> +If desired, additional arguments can be passed to the test run via the
> +meson ``--test-args`` option.
> +For example, tests will by default run on as many available cores as is
> +needed for the test, starting with the lowest number core - generally core 0.
> +To run the fast-tests suite using only cores 8 through 16, one can use::
> +
> +    $ meson test --suite fast-tests --test-args="-l 8-16"
> +
>  The meson command to list all available tests::
> 
>      $ meson test --list
> @@ -47,9 +55,16 @@ Arguments of ``test()`` that can be provided in
> meson.build are as below:
> 
>  * ``is_parallel`` is used to run test case either in parallel or 
> non-parallel mode.
>  * ``timeout`` is used to specify the timeout of test case.
> -* ``args`` is used to specify test specific parameters.
> +* ``args`` is used to specify test specific parameters (see note below).
>  * ``env`` is used to specify test specific environment parameters.
> 
> +Note: the content of meson ``--test-args`` option and the content of
> +``args`` are appended when invoking the DPDK test binary.
> +Because of this, it is recommended not to set any default coremask or
> +memory configuration in per test ``args`` and rather let users select
> +what best fits their environment. If a test can't run, then it should
> +be skipped, as described below.
> +
> 
>  Dealing with skipped test cases
>  -------------------------------
> --
> 2.23.0

Reply via email to