Add node 0 failover test.
authorTatsuo Ishii <ishii@postgresql.org>
Mon, 8 May 2017 08:14:51 +0000 (17:14 +0900)
committerTatsuo Ishii <ishii@postgresql.org>
Mon, 8 May 2017 08:14:51 +0000 (17:14 +0900)
Previously only node 1 failover test is performed in 003.failover.

src/test/regression/libs.sh
src/test/regression/tests/003.failover/create_expected_node0.sql [new file with mode: 0644]
src/test/regression/tests/003.failover/test.sh

index 646927892871763e5ff3e38a417dbc3547df2947..f7aeaad956035f43ea4b8da1ed5b28ddb8e4be98 100644 (file)
@@ -14,3 +14,24 @@ function wait_for_pgpool_startup {
                sleep 1
        done
 }
+
+#-------------------------------------------
+# wait for primary/master failover done
+#-------------------------------------------
+function wait_for_failover_done {
+       timeout=20
+
+       while [ $timeout -gt  0 ]
+       do
+               $PGBIN/psql -p $PGPOOL_PORT -c "show pool_nodes" test >/dev/null 2>&1
+               if [ $? = 0 ];then
+                   $PGBIN/psql -p $PGPOOL_PORT -c "show pool_nodes" test |egrep -i "primary|master">/dev/null 2>&1
+                   if [ $? = 0 ];then
+                       break;
+                   fi
+               fi
+               timeout=`expr $timeout - 1`
+               echo "timeout: $timeout"
+               sleep 1
+       done
+}
diff --git a/src/test/regression/tests/003.failover/create_expected_node0.sql b/src/test/regression/tests/003.failover/create_expected_node0.sql
new file mode 100644 (file)
index 0000000..abdd3bb
--- /dev/null
@@ -0,0 +1,21 @@
+CREATE TEMP TABLE tmp (
+  node_id text,
+  hostname text,
+  port text,
+  status text,
+  lb_weight text,
+  role text,
+  select_cnt text,
+  load_balance_node text,
+  replication_delay text,
+  mode text);
+
+INSERT INTO tmp VALUES
+('0',:dir,'11002','down','0.500000','standby','0','false','0','s'),
+('1',:dir,'11003','up','0.500000','primary','0','false','0','s'),
+('0',:dir,'11002','down','0.500000','slave','0','false','0','r'),
+('1',:dir,'11003','up','0.500000','master','0','false','0','r');
+
+SELECT node_id,hostname,port,status,lb_weight,role,select_cnt,load_balance_node,replication_delay
+FROM tmp
+WHERE mode = :mode
index 00136e89c84ec4a3eadd233d33d9272da21e4ebf..4bbd3de423e4262e7f57faa56c7878a89767ae0d 100755 (executable)
@@ -24,7 +24,7 @@ do
 
        $PSQL -c "show pool_nodes" test
 
-       # trrigger failover
+       # trigger failover on node 1
        $PG_CTL -D data1 -m f stop
        wait_for_pgpool_startup
        $PSQL -c "show pool_nodes" test |sed -e 's/true /false/'> result
@@ -39,8 +39,24 @@ do
                
        ./shutdownall
 
-       cd ..
+       ./startall
+       wait_for_pgpool_startup
+       # trigger failover on node 0
+       $PG_CTL -D data0 -m f stop
+       wait_for_failover_done
+       $PSQL -c "show pool_nodes" test |sed -e 's/true /false/'> result
 
+       # check the output of "show pool_nodes".
+       LANG=C $PSQL -f ../create_expected_node0.sql -v mode="'$mode'" -v dir="'$PGSOCKET_DIR'" test | tail -n 6 > expected
+       cmp result expected > /dev/null 2>&1
+       if [ $? != 0 ];then
+               ./shutdownall
+               exit 1
+       fi
+
+       ./shutdownall
+
+       cd ..
 done
 
 exit 0