From: Tom Lane <tgl@sss.pgh.pa.us>
Date: Thu, 3 Jan 2002 21:52:05 +0000 (+0000)
Subject: Instead of waiting a fixed amount of time for the test postmaster to
X-Git-Tag: REL7_2_BETA5~93
X-Git-Url: https://granicus.if.org/sourcecode?a=commitdiff_plain;h=d02f0aaa3b7313cabd9e64deb34ab630832730ce;p=postgresql

Instead of waiting a fixed amount of time for the test postmaster to
start up, wait until a psql connection attempt succeeds.  Per gripe
from Jason Tishler.
---

diff --git a/src/test/regress/pg_regress.sh b/src/test/regress/pg_regress.sh
index c325035899..918538c95e 100644
--- a/src/test/regress/pg_regress.sh
+++ b/src/test/regress/pg_regress.sh
@@ -1,5 +1,5 @@
 #! /bin/sh
-# $Header: /cvsroot/pgsql/src/test/regress/Attic/pg_regress.sh,v 1.22 2001/09/16 16:11:11 petere Exp $
+# $Header: /cvsroot/pgsql/src/test/regress/Attic/pg_regress.sh,v 1.23 2002/01/03 21:52:05 tgl Exp $
 
 me=`basename $0`
 : ${TMPDIR=/tmp}
@@ -353,6 +353,27 @@ then
     "$bindir/postmaster" -D "$PGDATA" -F $postmaster_options >"$LOGDIR/postmaster.log" 2>&1 &
     postmaster_pid=$!
 
+    # Wait till postmaster is able to accept connections (normally only
+    # a second or so, but Cygwin is reportedly *much* slower).  Don't
+    # wait forever, however.
+    i=0
+    max=60
+    until "$bindir/psql" $psql_options template1 </dev/null 2>/dev/null
+    do
+        i=`expr $i + 1`
+        if [ $i -ge $max ]
+        then
+            break
+        fi
+        if kill -0 $postmaster_pid >/dev/null 2>&1
+        then
+            : still starting up
+        else
+            break
+        fi
+        sleep 1
+    done
+
     if kill -0 $postmaster_pid >/dev/null 2>&1
     then
         echo "running on port $PGPORT with pid $postmaster_pid"
@@ -364,9 +385,6 @@ then
         (exit 2); exit
     fi
 
-    # give postmaster some time to pass WAL recovery
-    sleep 3
-
 else # not temp-install
 
     # If Unix sockets are not available, use the local host by default.