Test: enhance 037.failover_session/test.sh.
authorTatsuo Ishii <ishii@sraoss.co.jp>
Mon, 25 Dec 2023 08:10:12 +0000 (17:10 +0900)
committerTatsuo Ishii <ishii@sraoss.co.jp>
Mon, 25 Dec 2023 08:10:12 +0000 (17:10 +0900)
Previously it mistakenly executed pg_ctl stop after starting pgbench
in background.  The smart shutdown always allows pgbench to run
successfully with pgbench -C option not being set because backend
does not shutdown while client session continues. In order to shutdown
backend in the middle of pgbench run, tweak health check parameters so
that it detects the backend down as soon as possible. This will
trigger failover in the middle of pgbench run.

With these changes Pgpool-II 4.5 and beyond succeeds in all 4 tests,
while pre-4.5 will fail in all 4 tests (that was the originally
expected result).

Also allow to run all the 4 tests even if some tests fail so that we
can check which of which test failed.

src/test/regression/tests/037.failover_session/test.sh

index 196d6b323f17f54113901b9632951ebe7de63f58..519d5ef5e594a44df7e3ae5d70c97d1fac374709 100755 (executable)
@@ -25,10 +25,18 @@ source ./bashrc.ports
 PCP_DETACH_NODE="$PGPOOL_INSTALL_DIR/bin/pcp_detach_node -w -h localhost -p $PCP_PORT 2"
 
 # customize pgpool.conf. disable load balance to node 2.
+# Also modify health check parameters so that health check detects
+# backend down earlier.
 cat >> etc/pgpool.conf <<EOF
 backend_weight2 = 0
 log_per_node_statement = off
 log_error_verbosity = verbose
+health_check_period0 = 1
+health_check_max_retries0 = 0
+health_check_period1 = 1
+health_check_max_retries1 = 0
+health_check_period2 = 1
+health_check_max_retries2 = 0
 EOF
 
 ./startall
@@ -47,8 +55,10 @@ $PG_CTL -D data2 stop
 wait $!
 if [ $? != 0 ];then
     echo "pgbench exited with error. test1 failed."
-    ./shutdownall
-    exit 1
+    r1=fail
+else
+    echo "pgbench suceeded. test1 ok."
+    r1=ok
 fi
 ./shutdownall
 
@@ -68,8 +78,10 @@ $PG_CTL -D data2 stop
 wait $!
 if [ $? != 0 ];then
     echo "pgbench exited with error. test2 failed."
-    ./shutdownall
-    exit 1
+    r2=fail
+else
+    echo "pgbench suceeded. test2 ok."
+    r2=ok
 fi
 
 ./shutdownall
@@ -87,12 +99,15 @@ wait_for_pgpool_startup
 
 ($PGBENCH -n -S -c 10 -T 5)&
 sleep 1
-$PG_CTL -D data2 stop
+#$PG_CTL -D data2 stop
+$PCP_DETACH_NODE
 wait $!
 if [ $? != 0 ];then
     echo "pgbench exited with error. test3 failed."
-    ./shutdownall
-    exit 1
+    r3=fail
+else
+    echo "pgbench suceeded. test3 ok."
+    r3=ok
 fi
 ./shutdownall
 
@@ -113,10 +128,19 @@ $PG_CTL -D data2 stop
 wait $!
 if [ $? != 0 ];then
     echo "pgbench exited with error. test4 failed."
-    ./shutdownall
+    r4=fail
+else
+    echo "pgbench suceeded. test4 ok."
+    r4=ok
+fi
+
+if [ $r1 = ok -a $r2 = ok -a $r3 = ok -a $r4 = ok ]; then
+    echo "all test succeeded"
+    exit 0
+else
+    echo "some tests failed"
+    echo "test1: $r1 test2: $r2 test3: $r3 test4: $r4"
     exit 1
 fi
 
 ./shutdownall
-
-exit 0