[libvirt] PATCH: 2/4: Generic test script infrastructure
Jim Meyering
jim at meyering.net
Tue May 27 19:32:01 UTC 2008
"Daniel P. Berrange" <berrange at redhat.com> wrote:
> This patch adds more helper functions to the tests/testutils.c file which
> make it trivial to verify OOM handling in our test suites.
Very nice!
ACK
> diff -r 9f962ac84b09 tests/oomtrace.pl
> --- /dev/null Thu Jan 01 00:00:00 1970 +0000
> +++ b/tests/oomtrace.pl Wed May 21 22:22:48 2008 -0400
> @@ -0,0 +1,31 @@
> +#!/usr/bin/perl
> +use strict;
> +use warnings;
If you run ...| perl oomtrace.pl > /dev/full, it succeeds
in spite of the write error.
Insert these 8 lines and it will report the disk-full error.
If my File::Coda module were standard, I'd say "use it".
In the mean time, I use this (commented version at the URL):
(my $ME = $0) =~ s|.*/||;
# use File::Coda; # http://meyering.net/code/Coda/
END {
defined fileno STDOUT or return;
close STDOUT and return;
warn "$ME: failed to close standard output: $!\n";
$? ||= 1;
}
...
> diff -r 9f962ac84b09 tests/testutils.c
> --- a/tests/testutils.c Wed May 21 19:42:55 2008 -0400
> +++ b/tests/testutils.c Wed May 21 22:22:48 2008 -0400
...
> +static int testOOM = 0;
> +static int testDebug = 0;
> +static int testCounter = 0;
If these can be unsigned, using an unsigned type (like size_t or
uintmax_t) would make their declarations more readable, in that the
reviewer wouldn't have to wonder if/when they go negative.
> +int virtTestMain(int argc,
> + char **argv,
> + int (*func)(int, char **))
> +{
> +#if TEST_OOM
> + int ret;
> + int approxAlloc = 0;
> + int n;
> + char *oomStr = NULL, *debugStr;
> + int oomCount;
> +
> + if ((debugStr = getenv("VIR_TEST_DEBUG")) != NULL) {
> + virStrToLong_i(debugStr, NULL, 10, &testDebug);
> +
> + if (testDebug < 0)
> + testDebug = 0;
> + }
> +
> + if ((oomStr = getenv("VIR_TEST_OOM")) != NULL) {
> + virStrToLong_i(oomStr, NULL, 10, &oomCount);
When virStrToLong_i returns < 0, oomCount is not initialized, so when
the string is invalid, either diagnose it or default oomCount to 0.
More information about the libvir-list
mailing list