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>
This commit is contained in:
Lars Schneider 2015-11-19 09:58:09 +01:00 committed by Jeff King
parent 23aee4199a
commit 842addef70

View File

@ -10,6 +10,10 @@ TEST_NO_CREATE_REPO=NoThanks
# here the maximal retry timeout in seconds. # here the maximal retry timeout in seconds.
RETRY_TIMEOUT=60 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 . ./test-lib.sh
if ! test_have_prereq PYTHON if ! test_have_prereq PYTHON
@ -94,6 +98,19 @@ start_p4d() {
# will be caught with the "kill -0" check below. # will be caught with the "kill -0" check below.
i=${P4D_START_PATIENCE:-300} i=${P4D_START_PATIENCE:-300}
pid=$(cat "$pidfile") 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= ready=
while test $i -gt 0 while test $i -gt 0
do do
@ -156,7 +173,8 @@ kill_p4d() {
retry_until_fail kill -9 $pid retry_until_fail kill -9 $pid
# complain if it would not die # complain if it would not die
test_must_fail kill $pid >/dev/null 2>&1 && 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() { cleanup_git() {