libguestfs/0002-.-run-Timeout-tests-after-1-hour.patch

55 lines
1.6 KiB
Diff

From caab9f1e6f7ac0d8d5209c31854d640b807519ce Mon Sep 17 00:00:00 2001
From: "Richard W.M. Jones" <rjones@redhat.com>
Date: Thu, 11 Jul 2013 12:58:45 +0100
Subject: [PATCH 2/2] ./run: Timeout tests after 1 hour.
No single test should run longer than 1 hour even on the slowest of
hardware. We are having a problem in Koji where a test hangs and then
we end up losing the output completely, so a timeout + print the log
to that point is much better.
---
run.in | 15 ++++++++++++++-
1 file changed, 14 insertions(+), 1 deletion(-)
diff --git a/run.in b/run.in
index f49df8e..d8b2e03 100755
--- a/run.in
+++ b/run.in
@@ -220,12 +220,20 @@ fi
# - 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
+
+# Do we have Padraig's timeout utility (from coreutils)?
+if timeout --help >/dev/null 2>&1; then
+ # Timeout (SIGTERM) after 1 hour.
+ # Then send a second SIGKILL 30 seconds later.
+ timeout="timeout -k 30s 1h"
+fi
pid=$$
tmpout=$b/tmp/run-$pid
rm -f $tmpout
start_t="$(date +'%s')"
-$libtool "$@" > $tmpout 2>&1
+$timeout $libtool "$@" > $tmpout 2>&1
fail=$?
end_t="$(date +'%s')"
if [ "$fail" -eq 0 ]; then
@@ -234,6 +242,11 @@ if [ "$fail" -eq 0 ]; then
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 1 hour"
else
# Test failed.
echo "$b/run --test" "$@"
--
1.8.3.1