git.vger.kernel.org archive mirror
 help / color / mirror / Atom feed
From: larsxschneider@gmail.com
To: git@vger.kernel.org
Cc: sunshine@sunshineco.com, sschuberth@gmail.com,
	Matthieu.Moy@grenoble-inp.fr, avila.jn@gmail.com,
	luke@diamand.org, dturner@twopensource.com,
	Lars Schneider <larsxschneider@gmail.com>
Subject: [PATCH v4 2/4] git-p4: add p4d timeout in tests
Date: Fri,  6 Nov 2015 09:58:41 +0100	[thread overview]
Message-ID: <1446800323-2914-3-git-send-email-larsxschneider@gmail.com> (raw)
In-Reply-To: <1446800323-2914-1-git-send-email-larsxschneider@gmail.com>

From: Lars Schneider <larsxschneider@gmail.com>

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>
---
 t/lib-git-p4.sh | 20 +++++++++++++++++++-
 1 file changed, 19 insertions(+), 1 deletion(-)

diff --git a/t/lib-git-p4.sh b/t/lib-git-p4.sh
index 7548225..b1660f6 100644
--- a/t/lib-git-p4.sh
+++ b/t/lib-git-p4.sh
@@ -6,6 +6,10 @@
 # a subdirectory called "$git"
 TEST_NO_CREATE_REPO=NoThanks
 
+# 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
@@ -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
+	do
+		if test $(date +%s) -gt $timeout
+		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

  parent reply	other threads:[~2015-11-06  8:58 UTC|newest]

Thread overview: 20+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2015-11-06  8:58 [PATCH v4 0/4] Add Travis CI support larsxschneider
2015-11-06  8:58 ` [PATCH v4 1/4] add function test_must_fail_or_sigpipe and use it to fix flaky tests larsxschneider
2015-11-06 18:27   ` Junio C Hamano
2015-11-06 18:49     ` Junio C Hamano
2015-11-06  8:58 ` larsxschneider [this message]
2015-11-06  9:23   ` [PATCH v4 2/4] git-p4: add p4d timeout in tests Eric Sunshine
2015-11-06 13:20     ` Lars Schneider
2015-11-06  8:58 ` [PATCH v4 3/4] git-p4: retry kill/cleanup operations in tests with timeout larsxschneider
2015-11-06  9:28   ` Eric Sunshine
2015-11-06  9:47     ` Lars Schneider
2015-11-06 13:19     ` Lars Schneider
2015-11-06  8:58 ` [PATCH v4 4/4] Add Travis CI support larsxschneider
2015-11-06  9:56   ` Eric Sunshine
2015-11-06 13:18     ` Lars Schneider
     [not found]     ` <22B2C2B1-9260-4EC0-A4C5-C7F7DDD388BA@gmail.com>
2015-11-06 13:20       ` Sebastian Schuberth
2015-11-06 13:28         ` Lars Schneider
2015-11-06 13:36           ` Sebastian Schuberth
2015-11-06 13:55             ` Lars Schneider
2015-11-06 13:57               ` Sebastian Schuberth
2015-11-06 14:08                 ` Lars Schneider

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=1446800323-2914-3-git-send-email-larsxschneider@gmail.com \
    --to=larsxschneider@gmail.com \
    --cc=Matthieu.Moy@grenoble-inp.fr \
    --cc=avila.jn@gmail.com \
    --cc=dturner@twopensource.com \
    --cc=git@vger.kernel.org \
    --cc=luke@diamand.org \
    --cc=sschuberth@gmail.com \
    --cc=sunshine@sunshineco.com \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).