ctdb-tests: Separate custom cluster startup from test initialisation
authorMartin Schwenke <martin@meltin.net>
Tue, 10 Dec 2019 03:44:45 +0000 (14:44 +1100)
committerMartin Schwenke <martins@samba.org>
Wed, 22 Jul 2020 07:53:36 +0000 (07:53 +0000)
Separate cluster startup from test initialisation for tests that start
the cluster with customised configuration.  In these cases the result
of the cluster startup is actually the point of the test.
Additionally, pubips.013.failover_noop.sh claims to have completed
test initialisation twice, which just seems wrong.

The result is:

* ctdb_test_init() takes one option (-n) to indicate when it should
  not configure/start the cluster

* New function ctdb_nodes_start_custom() accepts options for special
  cluster configuration, only operates on local daemons and triggers a
  test failure rather than a test error on failure.

Signed-off-by: Martin Schwenke <martin@meltin.net>
Reviewed-by: Amitay Isaacs <amitay@gmail.com>
ctdb/tests/INTEGRATION/failover/pubips.013.failover_noop.sh
ctdb/tests/INTEGRATION/simple/cluster.012.reclock_command.sh
ctdb/tests/INTEGRATION/simple/eventscripts.001.zero_scripts.sh
ctdb/tests/scripts/integration.bash

index 1c13a3ce3c2c12bcabdb313a8765e840f346c33b..488243d62601053b131f4b70ca11d7cee7472bd3 100755 (executable)
@@ -11,10 +11,10 @@ set -e
 
 ctdb_test_skip_on_cluster
 
-echo "Starting CTDB with failover disabled..."
-ctdb_test_init -F
+ctdb_test_init -n
 
-cluster_is_healthy
+echo "Starting CTDB with failover disabled..."
+ctdb_nodes_start_custom -F
 
 echo "Getting IP allocation..."
 try_command_on_node -v any "$CTDB ip all | tail -n +2"
@@ -30,9 +30,7 @@ echo "GOOD: All IP addresses are unassigned"
 echo "----------------------------------------"
 
 echo "Starting CTDB with an empty public addresses configuration..."
-ctdb_test_init -P /dev/null
-
-cluster_is_healthy
+ctdb_nodes_start_custom -P /dev/null
 
 echo "Trying explicit ipreallocate..."
 try_command_on_node any $CTDB ipreallocate
index 76be340d7cbf8794d1570405c2e1b255e8771736..d043c7e26150b75e5e8eb7867224f786db687a31 100755 (executable)
@@ -12,9 +12,9 @@ set -e
 
 ctdb_test_skip_on_cluster
 
-echo "Starting CTDB with recovery lock command configured..."
-ctdb_test_init -R
+ctdb_test_init -n
 
-cluster_is_healthy
+echo "Starting CTDB with recovery lock command configured..."
+ctdb_nodes_start_custom -R
 
 echo "Good, that seems to work!"
index fb1d031e9826e0e08fcbbd7eebee4e5c1fe13a86..4fdf61cee2ddcf15c51350f53fe140903abc6b1e 100755 (executable)
@@ -9,8 +9,8 @@ set -e
 
 ctdb_test_skip_on_cluster
 
-ctdb_test_init --no-event-scripts
+ctdb_test_init -n
 
-cluster_is_healthy
+ctdb_nodes_start_custom --no-event-scripts
 
 echo "Good, that seems to work!"
index 61372a44b6051b3e296a1db87a14ece02bedd1c8..b868f6836569a08b5c2c0e68efb422366b439199 100644 (file)
@@ -88,19 +88,37 @@ ctdb_test_cleanup_pid_clear ()
        ctdb_test_cleanup_pid=""
 }
 
+# -n option means do not configure/start cluster
 ctdb_test_init ()
 {
        trap "ctdb_test_exit" 0
 
        ctdb_nodes_stop >/dev/null 2>&1 || true
 
+       if [ "$1" != "-n" ] ; then
+               echo "Configuring cluster..."
+               setup_ctdb || ctdb_test_error "Cluster configuration failed"
+
+               echo "Starting cluster..."
+               ctdb_init || ctdb_test_error "Cluster startup failed"
+       fi
+
+       echo  "*** SETUP COMPLETE AT $(date '+%F %T'), RUNNING TEST..."
+}
+
+ctdb_nodes_start_custom ()
+{
+       if ctdb_test_on_cluster ; then
+               ctdb_test_error "ctdb_nodes_start_custom() on real cluster"
+       fi
+
+       ctdb_nodes_stop >/dev/null 2>&1 || true
+
        echo "Configuring cluster..."
        setup_ctdb "$@" || ctdb_test_error "Cluster configuration failed"
 
        echo "Starting cluster..."
-       ctdb_init || ctdb_test_error "Cluster startup failed"
-
-       echo  "*** SETUP COMPLETE AT $(date '+%F %T'), RUNNING TEST..."
+       ctdb_init || ctdb_test_fail "Cluster startup failed"
 }
 
 ctdb_test_skip_on_cluster ()