summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorLars Schneider <larsxschneider@gmail.com>2015-11-19 09:58:09 +0100
committerJeff King <peff@peff.net>2015-11-20 08:02:06 -0500
commit842addef70e41f8bb8a16f4d9084432301c3f50f (patch)
tree45762074976add6441a81433d08799d4b4e47713
parent23aee4199a69fae861f9d173ee0ef1c2a7fab0d5 (diff)
downloadgit-842addef70e41f8bb8a16f4d9084432301c3f50f.tar.gz
git-p4: add p4d timeout in tests
In rare cases p4d seems to hang. This watchdog will kill the p4d process after 300s in any case. That means each individual git p4 test needs to finish before 300s or it will fail. Signed-off-by: Lars Schneider <larsxschneider@gmail.com> Acked-by: Luke Diamand <luke@diamand.org> Signed-off-by: Jeff King <peff@peff.net>
-rw-r--r--t/lib-git-p4.sh20
1 files changed, 19 insertions, 1 deletions
diff --git a/t/lib-git-p4.sh b/t/lib-git-p4.sh
index 3c9ad9adcf..acd5578eb5 100644
--- a/t/lib-git-p4.sh
+++ b/t/lib-git-p4.sh
@@ -10,6 +10,10 @@ TEST_NO_CREATE_REPO=NoThanks
# here the maximal retry timeout in seconds.
RETRY_TIMEOUT=60
+# Sometimes p4d seems to hang. Terminate the p4d process automatically after
+# the defined timeout in seconds.
+P4D_TIMEOUT=300
+
. ./test-lib.sh
if ! test_have_prereq PYTHON
@@ -94,6 +98,19 @@ start_p4d() {
# will be caught with the "kill -0" check below.
i=${P4D_START_PATIENCE:-300}
pid=$(cat "$pidfile")
+
+ timeout=$(($(time_in_seconds) + $P4D_TIMEOUT))
+ while true
+ do
+ if test $(time_in_seconds) -gt $timeout
+ then
+ kill -9 $pid
+ exit 1
+ fi
+ sleep 1
+ done &
+ watchdog_pid=$!
+
ready=
while test $i -gt 0
do
@@ -156,7 +173,8 @@ kill_p4d() {
retry_until_fail kill -9 $pid
# complain if it would not die
test_must_fail kill $pid >/dev/null 2>&1 &&
- rm -rf "$db" "$cli" "$pidfile"
+ rm -rf "$db" "$cli" "$pidfile" &&
+ retry_until_fail kill -9 $watchdog_pid
}
cleanup_git() {