build: Drop serial_tests.

Use (implicitly) parallel tests on new enough automake.  The tests run
a bit quicker with this change.  On my laptop, I measured 27 mins down
to 18 mins.

Change the ./run function so that ./run --test no longer spools the
test output to a file.  That is not necessary when using parallel
tests, since the test harness does the same thing.

Note: This commit removes the $RUN_OUTPUT_FILE functionality.  We will
change the CI integration in a future commit so it uses the .trs and
.log files.
This commit is contained in:
Richard W.M. Jones
2015-11-06 14:29:33 +00:00
committed by Pino Toscano
parent 7964e48b5e
commit c0a781ed9a
4 changed files with 21 additions and 50 deletions

2
.gitignore vendored
View File

@@ -14,11 +14,13 @@
*.jar
*.la
*.lo
*.log
*.o
*.orig
*.patch
*.rej
*.swp
*.trs
bindtests.tmp
cscope.out

View File

@@ -30,23 +30,8 @@ AC_SUBST([RELEASE_DATE], [2015-11-04])
AC_CONFIG_AUX_DIR([build-aux])
dnl Initialize automake. automake < 1.12 didn't have serial-tests and
dnl gives an error if it sees this, but for automake >= 1.13
dnl serial-tests is required so we have to include it. Solution is to
dnl test for the version of automake (by running an external command)
dnl and provide it if necessary. Note we have to do this entirely using
dnl m4 macros since automake queries this macro by running
dnl 'autoconf --trace'.
m4_define([serial_tests], [
m4_esyscmd([automake --version | head -1 | awk '
{
split ($NF, version, ".");
if (version[1] == 1 && version[2] >= 12)
print "serial-tests";
}'
])
])
AM_INIT_AUTOMAKE(foreign serial_tests subdir-objects) dnl NB: Do not [quote] this parameter.
dnl Initialize automake.
AM_INIT_AUTOMAKE(foreign subdir-objects) dnl NB: Do not [quote] this parameter.
m4_ifndef([AM_SILENT_RULES], [m4_define([AM_SILENT_RULES],[])])
AM_SILENT_RULES([yes]) # make --enable-silent-rules the default.

46
run.in
View File

@@ -31,15 +31,20 @@
# For lots more ways to use this script, see the libguestfs README
# file.
#
# The script can also be used to make the output of tests shorter:
# The script should also be used for tests like this:
#
# TESTS_ENVIRONMENT = ... $(top_builddir)/run --test [$(VG)]
# (Use the optional $(VG) when the tests must also be run under
# valgrind).
#
# The --test parameter introduces a timeout, stopping tests from
# running forever.
#
# Use the optional $(VG) when the tests must also be run under
# valgrind.
#----------------------------------------------------------------------
if [ "$1" = "--test" ]; then
test_mode=1
timeout_mode=1
shift
fi
@@ -223,14 +228,11 @@ export GNOME_KEYRING_CONTROL=
export GNOME_KEYRING_PID=
# Run the program.
if [ -z "$test_mode" ]; then
if [ -z "$timeout_mode" ]; then
exec $libtool "$@"
fi
# For tests (./run --test):
# - redirect all output to a file, and only print the file if the
# test fails
# - print how long it takes to run the test
# - timeout if the test takes too long to run
# Originally 1h, but that is not long enough to run the C API
@@ -246,41 +248,19 @@ if timeout --foreground 2 sleep 0 >/dev/null 2>&1; then
fi
fi
pid=$$
tmpout=$b/tmp/run-$pid
rm -f $tmpout
start_t="$(date +'%s')"
$timeout $libtool "$@" > $tmpout 2>&1
$timeout $libtool "$@"
fail=$?
end_t="$(date +'%s')"
if [ "$fail" -eq 0 ]; then
# Test successful.
echo $(($end_t - $start_t)) seconds: "$@"
:
elif [ "$fail" -eq 77 ]; then
# Tests return 77 to mean skipped.
cat $tmpout
:
elif [ "$fail" -eq 124 ]; then
# Timed out.
echo "$b/run --test" "$@"
cat $tmpout
echo "$b/run: command timed out after $timeout_period"
else
# Test failed.
echo "$b/run --test" "$@"
cat $tmpout
echo "$b/run: command failed with exit code $fail"
fi
if [ -n "$RUN_OUTPUT_FILE" ]; then
testname=`echo "$1" | @SED@ -e 's,^./,,g'`
echo "<test rescode=\"$fail\" name=\"$testname\" time=\"$(($end_t - $start_t))\">" >> $RUN_OUTPUT_FILE
echo "<![CDATA[" >> $RUN_OUTPUT_FILE
# skip the results of test-virt-rescue.pl, as they contain
# non-ASCII chars which give troubles to xsltproc
if ! echo "$testname" | grep test-virt-rescue.pl &>/dev/null ; then
cat $tmpout >> $RUN_OUTPUT_FILE
fi
echo "]]>" >> $RUN_OUTPUT_FILE
echo "</test>" >> $RUN_OUTPUT_FILE
fi
rm -f $tmpout
exit $fail

View File

@@ -75,3 +75,7 @@ qemu_speed_test_LDADD = \
$(LIBVIRT_LIBS) \
$(LTLIBINTL) \
$(top_builddir)/gnulib/lib/libgnu.la
# Don't run these tests in parallel, since they are designed to check
# the integrity of qemu.
.NOTPARALLEL: