summaryrefslogtreecommitdiff
path: root/0001-t-lib-httpd-try-harder-to-find-a-port-for-apache.patch
diff options
context:
space:
mode:
Diffstat (limited to '0001-t-lib-httpd-try-harder-to-find-a-port-for-apache.patch')
-rw-r--r--0001-t-lib-httpd-try-harder-to-find-a-port-for-apache.patch73
1 files changed, 73 insertions, 0 deletions
diff --git a/0001-t-lib-httpd-try-harder-to-find-a-port-for-apache.patch b/0001-t-lib-httpd-try-harder-to-find-a-port-for-apache.patch
new file mode 100644
index 0000000..f7c1509
--- /dev/null
+++ b/0001-t-lib-httpd-try-harder-to-find-a-port-for-apache.patch
@@ -0,0 +1,73 @@
+From aedeaaf788bd8a7fc5a1887196b6f6d8a5c31362 Mon Sep 17 00:00:00 2001
+From: Todd Zullinger <tmz@pobox.com>
+Date: Sun, 21 Aug 2022 13:49:57 -0400
+Subject: [PATCH] t/lib-httpd: try harder to find a port for apache
+MIME-Version: 1.0
+Content-Type: text/plain; charset=UTF-8
+Content-Transfer-Encoding: 8bit
+
+When running multiple builds concurrently, tests which run daemons, like
+apache httpd, sometimes conflict with each other, leading to spurious
+failures:
+
+ ++ /usr/sbin/httpd -d '/tmp/git-t.ck9I/trash directory.t9118-git-svn-funky-branch-names/httpd' \
+ -f /builddir/build/BUILD/git-2.37.2/t/lib-httpd/apache.conf -DDAV -DSVN -c 'Listen 127.0.0.1:9118' \
+ -k start
+ (98)Address already in use: AH00072: make_sock: could not bind to address 127.0.0.1:9118
+ no listening sockets available, shutting down
+ AH00015: Unable to open logs
+ ++ test 1 -ne 0
+
+Try a bit harder to find an open port to use to avoid these intermittent
+failures. If we fail to start httpd, increment the port number and try
+again. By default, we make 3 attempts. This may be overridden by
+setting GIT_TEST_START_HTTPD_TRIES to a different value.
+
+Helped-by: Ondřej Pohořelský <opohorel@redhat.com>
+Signed-off-by: Todd Zullinger <tmz@pobox.com>
+---
+ t/lib-httpd.sh | 29 ++++++++++++++++++-----------
+ 1 file changed, 18 insertions(+), 11 deletions(-)
+
+diff --git a/t/lib-httpd.sh b/t/lib-httpd.sh
+index 1f6b9b08d1..9279dcd659 100644
+--- a/t/lib-httpd.sh
++++ b/t/lib-httpd.sh
+@@ -175,19 +175,26 @@ prepare_httpd() {
+ }
+
+ start_httpd() {
+- prepare_httpd >&3 2>&4
+-
+ test_atexit stop_httpd
+
+- "$LIB_HTTPD_PATH" -d "$HTTPD_ROOT_PATH" \
+- -f "$TEST_PATH/apache.conf" $HTTPD_PARA \
+- -c "Listen 127.0.0.1:$LIB_HTTPD_PORT" -k start \
+- >&3 2>&4
+- if test $? -ne 0
+- then
+- cat "$HTTPD_ROOT_PATH"/error.log >&4 2>/dev/null
+- test_skip_or_die GIT_TEST_HTTPD "web server setup failed"
+- fi
++ i=0
++ while test $i -lt ${GIT_TEST_START_HTTPD_TRIES:-3}
++ do
++ i=$(($i + 1))
++ prepare_httpd >&3 2>&4
++ say >&3 "Starting httpd on port $LIB_HTTPD_PORT"
++ "$LIB_HTTPD_PATH" -d "$HTTPD_ROOT_PATH" \
++ -f "$TEST_PATH/apache.conf" $HTTPD_PARA \
++ -c "Listen 127.0.0.1:$LIB_HTTPD_PORT" -k start \
++ >&3 2>&4
++ test $? -eq 0 && return
++ LIB_HTTPD_PORT=$(($LIB_HTTPD_PORT + 1))
++ export LIB_HTTPD_PORT
++ # clean up modules symlink, prepare_httpd will re-create it
++ rm -f "$HTTPD_ROOT_PATH/modules"
++ done
++ cat "$HTTPD_ROOT_PATH"/error.log >&4 2>/dev/null
++ test_skip_or_die GIT_TEST_HTTPD "web server setup failed"
+ }
+
+ stop_httpd() {