summaryrefslogtreecommitdiff
path: root/0002-t-lib-git-daemon-try-harder-to-find-a-port.patch
diff options
context:
space:
mode:
Diffstat (limited to '0002-t-lib-git-daemon-try-harder-to-find-a-port.patch')
-rw-r--r--0002-t-lib-git-daemon-try-harder-to-find-a-port.patch88
1 files changed, 88 insertions, 0 deletions
diff --git a/0002-t-lib-git-daemon-try-harder-to-find-a-port.patch b/0002-t-lib-git-daemon-try-harder-to-find-a-port.patch
new file mode 100644
index 0000000..4540b63
--- /dev/null
+++ b/0002-t-lib-git-daemon-try-harder-to-find-a-port.patch
@@ -0,0 +1,88 @@
+From 16750d024ce038b019ab2e9ee5639901e445af37 Mon Sep 17 00:00:00 2001
+From: Todd Zullinger <tmz@pobox.com>
+Date: Fri, 26 Aug 2022 18:28:44 -0400
+Subject: [PATCH] t/lib-git-daemon: try harder to find a port
+
+As with the previous commit, try harder to find an open port to avoid
+intermittent failures on busy/shared build systems.
+
+By default, we make 3 attempts. This may be overridden by setting
+GIT_TEST_START_GIT_DAEMON_TRIES to a different value.
+
+Signed-off-by: Todd Zullinger <tmz@pobox.com>
+---
+ t/lib-git-daemon.sh | 60 ++++++++++++++++++++++++++++-----------------
+ 1 file changed, 37 insertions(+), 23 deletions(-)
+
+diff --git a/t/lib-git-daemon.sh b/t/lib-git-daemon.sh
+index e62569222b..c3e8dda9ff 100644
+--- a/t/lib-git-daemon.sh
++++ b/t/lib-git-daemon.sh
+@@ -51,30 +51,44 @@ start_git_daemon() {
+ registered_stop_git_daemon_atexit_handler=AlreadyDone
+ fi
+
+- say >&3 "Starting git daemon ..."
+- mkfifo git_daemon_output
+- ${LIB_GIT_DAEMON_COMMAND:-git daemon} \
+- --listen=127.0.0.1 --port="$LIB_GIT_DAEMON_PORT" \
+- --reuseaddr --verbose --pid-file="$GIT_DAEMON_PIDFILE" \
+- --base-path="$GIT_DAEMON_DOCUMENT_ROOT_PATH" \
+- "$@" "$GIT_DAEMON_DOCUMENT_ROOT_PATH" \
+- >&3 2>git_daemon_output &
+- GIT_DAEMON_PID=$!
+- {
+- read -r line <&7
+- printf "%s\n" "$line" >&4
+- cat <&7 >&4 &
+- } 7<git_daemon_output &&
++ i=0
++ while test $i -lt ${GIT_TEST_START_GIT_DAEMON_TRIES:-3}
++ do
++ say >&3 "Starting git daemon on port $LIB_GIT_DAEMON_PORT ..."
++ mkfifo git_daemon_output
++ ${LIB_GIT_DAEMON_COMMAND:-git daemon} \
++ --listen=127.0.0.1 --port="$LIB_GIT_DAEMON_PORT" \
++ --reuseaddr --verbose --pid-file="$GIT_DAEMON_PIDFILE" \
++ --base-path="$GIT_DAEMON_DOCUMENT_ROOT_PATH" \
++ "$@" "$GIT_DAEMON_DOCUMENT_ROOT_PATH" \
++ >&3 2>git_daemon_output &
++ GIT_DAEMON_PID=$!
++ {
++ read -r line <&7
++ printf "%s\n" "$line" >&4
++ cat <&7 >&4 &
++ } 7<git_daemon_output &&
+
+- # Check expected output
+- if test x"$(expr "$line" : "\[[0-9]*\] \(.*\)")" != x"Ready to rumble"
+- then
+- kill "$GIT_DAEMON_PID"
+- wait "$GIT_DAEMON_PID"
+- unset GIT_DAEMON_PID
+- test_skip_or_die GIT_TEST_GIT_DAEMON \
+- "git daemon failed to start"
+- fi
++ # Check expected output
++ output="$(expr "$line" : "\[[0-9]*\] \(.*\)")"
++ # Return if found
++ test x"$output" = x"Ready to rumble" && return
++ # Increment port for retry if not found
++ LIB_GIT_DAEMON_PORT=$(($LIB_GIT_DAEMON_PORT + 1))
++ export LIB_GIT_DAEMON_PORT
++ GIT_DAEMON_HOST_PORT=127.0.0.1:$LIB_GIT_DAEMON_PORT
++ GIT_DAEMON_URL=git://$GIT_DAEMON_HOST_PORT
++ # unset GIT_DAEMON_PID; remove the fifo & pid file
++ GIT_DAEMON_PID=
++ rm -f git_daemon_output "$GIT_DAEMON_PIDFILE"
++ done
++
++ # Clean up and return failure
++ kill "$GIT_DAEMON_PID"
++ wait "$GIT_DAEMON_PID"
++ unset GIT_DAEMON_PID
++ test_skip_or_die GIT_TEST_GIT_DAEMON \
++ "git daemon failed to start"
+ }
+
+ stop_git_daemon() {