[libvirt] [PATCHv2 2/1] tests: add helper to determine when to skip expensive tests

Peter Krempa pkrempa at redhat.com
Mon Aug 12 11:54:55 UTC 2013


On 08/02/13 23:47, Eric Blake wrote:
> The logic set up in previous patch for exposing VIR_TEST_EXPENSIVE
> to individual tests is as follows:
>
> make check VIR_TEST_EXPENSIVE=0   => getenv("VIR_TEST_EXPENSIVE") sees "0"
> make check VIR_TEST_EXPENSIVE=1   => getenv("VIR_TEST_EXPENSIVE") sees "1"
> make check                        => getenv("VIR_TEST_EXPENSIVE") sees
> either "0" or "1", based on configure options
> cd tests; ./FOOtest               => getenv("VIR_TEST_EXPENSIVE") sees
> whatever is in your environment (usually NULL, but possibly garbage)
>
> Merely checking if VIR_TEST_EXPENSIVE is set in the environment
> does the wrong thing; likewise, it is unsafe to assume the
> variable will always contain a valid number.
>
> As such, it helps to have helper functions, instead of making each
> expensive test repeat the probe of the environment.
>
> * tests/testutils.h (virTestGetExpensive): New prototype.
> * tests/testutils.c (virTestGetExpensive): Implement it.
> * tests/test-lib.sh (very_expensive_): Rename...
> (test_expensive): ...and tweak to use VIR_TEST_EXPENSIVE.
>
> Signed-off-by: Eric Blake <eblake at redhat.com>
> ---
>
> v2: new patch followup, no v1
>
>   tests/test-lib.sh | 29 ++++++++++++++++++++++-------
>   tests/testutils.c |  8 ++++++++
>   tests/testutils.h |  1 +
>   3 files changed, 31 insertions(+), 7 deletions(-)
>
> diff --git a/tests/test-lib.sh b/tests/test-lib.sh
> index 918bf73..2f79706 100644
> --- a/tests/test-lib.sh
> +++ b/tests/test-lib.sh
> @@ -1,4 +1,22 @@
> -# source this file; set up for tests
> +# test-lib.sh: source this file; set up for tests
> +
> +# Copyright (C) 2008-2013 Red Hat, Inc.
> +#
> +# This library is free software; you can redistribute it and/or
> +# modify it under the terms of the GNU Lesser General Public
> +# License as published by the Free Software Foundation; either
> +# version 2.1 of the License, or (at your option) any later version.
> +#
> +# This library is distributed in the hope that it will be useful,
> +# but WITHOUT ANY WARRANTY; without even the implied warranty of
> +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
> +# Lesser General Public License for more details.
> +#
> +# You should have received a copy of the GNU Lesser General Public
> +# License along with this library.  If not, see
> +# <http://www.gnu.org/licenses/>.
> +#
> +# Based on an idea from GNU coreutils
>
>   test -z "$abs_srcdir" && abs_srcdir=$(pwd)
>   test -z "$abs_builddir" && abs_builddir=$(pwd)
> @@ -158,15 +176,12 @@ require_selinux_()
>     esac
>   }
>
> -very_expensive_()
> +test_expensive()
>   {
> -  if test "$RUN_VERY_EXPENSIVE_TESTS" != yes; then
> +  if test "$VIR_TEST_EXPENSIVE" != 1; then
>       skip_test_ '
>   This test is very expensive, so it is disabled by default.
> -To run it anyway, rerun make check with the RUN_VERY_EXPENSIVE_TESTS
> -environment variable set to yes.  E.g.,
> -
> -  env RUN_VERY_EXPENSIVE_TESTS=yes make check
> +To run it anyway, rerun: make check VIR_TEST_EXPENSIVE=1
>   '
>     fi
>   }
> diff --git a/tests/testutils.c b/tests/testutils.c
> index 72aa5b3..c521552 100644
> --- a/tests/testutils.c
> +++ b/tests/testutils.c
> @@ -66,6 +66,7 @@
>
>   static unsigned int testDebug = -1;
>   static unsigned int testVerbose = -1;
> +static unsigned int testExpensive = -1;

Pre-existing, but initializing unsigneds to -1 is really awkward ...

>
>   static unsigned int testOOM = 0;
>   static size_t testCounter = 0;
> @@ -581,6 +582,13 @@ virTestGetVerbose(void) {
>       return testVerbose || virTestGetDebug();
>   }
>
> +unsigned int

A boolean would be enough given the return values of virTestGetFlag and 
the expected results.

> +virTestGetExpensive(void) {
> +    if (testExpensive == -1)
> +        testExpensive = virTestGetFlag("VIR_TEST_EXPENSIVE");
> +    return testExpensive;
> +}
> +
>   int virtTestMain(int argc,
>                    char **argv,
>                    int (*func)(void))

ACK anyways, my comments are pointing out stuff that was pre-existing.

Peter




More information about the libvir-list mailing list