Re: [PATCH v4 2/4] git-p4: add p4d timeout in tests
From: Eric Sunshine <hidden>
Date: 2016-06-15 23:07:12
On Fri, Nov 6, 2015 at 3:58 AM, [off-list ref] wrote:
quoted hunk ↗ jump to hunk
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 <redacted> ---diff --git a/t/lib-git-p4.sh b/t/lib-git-p4.sh@@ -81,6 +85,19 @@ start_p4d() { # will be caught with the "kill -0" check below. i=${P4D_START_PATIENCE:-300} pid=$(cat "$pidfile") + + timeout=$(($(date +%s) + $P4D_TIMEOUT)) + while true
The 'while' line is incorrectly indented with spaces rather than tabs.
+ do + if test $(date +%s) -gt $timeout
I don't know how portable you intend this to be, but 'date +%s' is not
universally supported (it's missing on Solaris, for instance, and
perhaps AIX). For 6a9d16a (filter-branch: add passed/remaining seconds
on progress, 2015-09-07), we ultimately settled upon detecting +%s
support dynamically:
if date '+%s' 2>/dev/null | grep -q '^[0-9][0-9]*$'
# it's supported
fi
Perhaps you'd want to detect this via a lazy prerequisite and skip
this if not supported?
quoted hunk ↗ jump to hunk
+ then + kill -9 $pid + exit 1 + fi + sleep 1 + done & + watchdog_pid=$! + ready= while test $i -gt 0 do@@ -131,7 +148,8 @@ kill_p4d() { done && # 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() { --2.5.1