[dpdk-dev] [PATCH v2] guides: add a testing guide for developing tests

David Marchand david.marchand at redhat.com
Thu Mar 11 22:25:47 CET 2021


On Tue, Mar 9, 2021 at 5:14 PM Aaron Conole <aconole at redhat.com> wrote:
> >>> > +The suites can be selected by adding the ``--suite`` option to the
> >>> > +``meson test`` command.  Ex: ``meson test --suite fast-tests``::
> >>> > +
> >>> > +  $ meson test -C build --suite fast-tests
> >>> > +  ninja: Entering directory `/home/aconole/git/dpdk/build'
> >>> > +  [2543/2543] Linking target app/test/dpdk-test.
> >>> > +  1/60 DPDK:fast-tests / acl_autotest          OK       3.17 s
> >>> > +  2/60 DPDK:fast-tests / bitops_autotest       OK       0.22 s
> >>> > +  3/60 DPDK:fast-tests / byteorder_autotest    OK       0.22 s
> >>> > +  4/60 DPDK:fast-tests / cmdline_autotest      OK       0.28 s
> >>> > +  5/60 DPDK:fast-tests / common_autotest       OK       0.57 s
> >>> > +  6/60 DPDK:fast-tests / cpuflags_autotest     OK       0.27 s
> >>> > +  ...
> >>>
> >>> Trying this in my build env, I get all tests failing.
> >>> This is because I run this as a normal user, but the system has
> >>> hugepages configured.
> >>> I figured this out quickly since I know the test framework (simply
> >>> added a echo 0; exit at the top of has-hugepages.sh).
> >>> But I am not sure a reader of this doc would be able to troubleshoot this.
> >>>
> >>> Not sure if this is worth explaining here, or if we can enhance the
> >>> hugepage check (permissions maybe?).
> >
> > I prefer to fix the hugepage check to make the tests SKIP when we don't
> > have hugepages accessible (so we need some kind of permission check in
> > there).  I will submit it separately.
> >
>
> Here is my PoC for this - if you think it's good enough, I'll submit as
> formal PATCH.
>
> ---
> index d600fad319..1c3cfb665a 100755
> --- a/app/test/has-hugepage.sh
> +++ b/app/test/has-hugepage.sh
> @@ -3,7 +3,17 @@
>  # Copyright 2020 Mellanox Technologies, Ltd
>
>  if [ "$(uname)" = "Linux" ] ; then
> -       cat /proc/sys/vm/nr_hugepages || echo 0
> +       nr_hugepages=$(cat /proc/sys/vm/nr_hugepages)
> +       # Need to check if we have permissions to access hugepages
> +       perm=""
> +       for mount in `mount | grep hugetlbfs | awk '{ print $3; }'`; do
> +               test ! -w $mount/. || perm="$mount"
> +       done
> +       if [ "$perm" = "" -o "$nr_hugepages" = "0" ]; then
> +               echo 0
> +       else
> +               echo $nr_hugepages
> +       fi
>  elif [ "$(uname)" = "FreeBSD" ] ; then
>         echo 1 # assume FreeBSD always has hugepages
>  else
> ---
>

I need to think more about the multiple mountpoints case (but I may be
imagining too much twisted setups..).

At least, this works in my env.
We need tests in travis/GHA, and sending a non-RFC patch is the best
way to know :-)

So +1 for a patch.
Thanks Aaron!


-- 
David Marchand



More information about the dev mailing list