diff options
author | Martin Schwenke <martin@meltin.net> | 2015-02-02 21:21:20 +1100 |
---|---|---|
committer | Amitay Isaacs <amitay@samba.org> | 2015-02-04 05:40:55 +0100 |
commit | 0e89d586b2b7fa6a165a49862d2dce0d13f8b157 (patch) | |
tree | 8ca03e9d093f4e3cc689e1160497b4b4e9066258 /ctdb | |
parent | 5e00673f2d95b6257a05324d2ae068004e29ff85 (diff) | |
download | samba-0e89d586b2b7fa6a165a49862d2dce0d13f8b157.tar.gz samba-0e89d586b2b7fa6a165a49862d2dce0d13f8b157.tar.xz samba-0e89d586b2b7fa6a165a49862d2dce0d13f8b157.zip |
ctdb-tests: Add new "ctdb setreclock" test
Signed-off-by: Martin Schwenke <martin@meltin.net>
Reviewed-by: Amitay Isaacs <amitay@gmail.com>
Autobuild-User(master): Amitay Isaacs <amitay@samba.org>
Autobuild-Date(master): Wed Feb 4 05:40:55 CET 2015 on sn-devel-104
Diffstat (limited to 'ctdb')
-rwxr-xr-x | ctdb/tests/simple/35_set_recmaster.sh | 117 |
1 files changed, 117 insertions, 0 deletions
diff --git a/ctdb/tests/simple/35_set_recmaster.sh b/ctdb/tests/simple/35_set_recmaster.sh new file mode 100755 index 0000000000..7c745e4dcf --- /dev/null +++ b/ctdb/tests/simple/35_set_recmaster.sh @@ -0,0 +1,117 @@ +#!/bin/bash + +test_info() +{ + cat <<EOF +Verify that "ctdb setrecmaster" sets the recovery lock correctly. + +This test only does something when there is a recovery lock +configured. +EOF +} + +. "${TEST_SCRIPTS_DIR}/integration.bash" + +ctdb_test_init "$@" + +set -e + +cluster_is_healthy + +# Reset configuration +ctdb_restart_when_done + +get_generation () +{ + local out + try_command_on_node any $CTDB status + generation=$(sed -n -e 's@^Generation:@@p' <<<"$out") +} + +generation_has_changed () +{ + local old_generation="$generation" + get_generation + [ "$old_generation" != "$generation" ] +} + +wait_until_generation_has_changed () +{ + echo + echo "Wait until generation has changed..." + wait_until 60 generation_has_changed +} + +echo "Check that recovery lock is set the same on all nodes..." +try_command_on_node -v any $CTDB -n all getreclock +n=$(echo "$out" | sort -u | wc -l) +if [ "$n" = 1 ] ; then + echo "GOOD: All nodes have the same recovery lock setting" +else + echo "BAD: Recovery lock setting differs across nodes" + exit 1 +fi + +echo +echo "Check that recovery lock is actually enabled..." +t=$(echo "$out" | sed -e 's@^Reclock file:@@' | sort -u) +if [ "$t" != "No reclock file used." ] ; then + echo "OK: Recovery lock is set" +else + echo "OOPS: Recovery lock is unset. Skipping remainder of test" + exit 0 +fi + +echo +orig_reclock=$(sed -n -e '1s@^Reclock file:@@p' <<<"$out") +echo "Remember original recovery lock file: \"${orig_reclock}\"" + +echo +echo "Unset and test the recovery lock on all nodes..." +try_command_on_node any $CTDB -n all setreclock +try_command_on_node -v any $CTDB -n all getreclock +t=$(sort -u <<<"$out") +if [ "$t" = "No reclock file used." ] ; then + echo "GOOD: Recovery lock unset on all nodes" +else + echo "BAD: Recovery lock not unset on all nodes" + exit 1 +fi + +echo +get_generation +echo "Current generation is ${generation}" + +alt="${orig_reclock}.test" +echo +echo "Set alternative recovery lock (${alt}) and test on all nodes..." +try_command_on_node any $CTDB -n all setreclock "$alt" +try_command_on_node -v any $CTDB -n all getreclock +t=$(echo "$out" | sed -e 's@^Reclock file:@@' | sort -u) +if [ "$t" = "$alt" ] ; then + echo "GOOD: Recovery lock set on all nodes" +else + echo "BAD: Recovery lock not set on all nodes" + try_command_on_node -v any rm -v "$alt" || true + exit 1 +fi + +# Setting or updating the recovery lock file must cause a recovery +wait_until_generation_has_changed +echo "Current generation is ${generation}" + +echo +echo "Restore and test the recovery lock on all nodes..." +try_command_on_node any $CTDB -n all setreclock "$orig_reclock" +try_command_on_node -v any rm -v "$alt" +try_command_on_node -v any $CTDB -n all getreclock +t=$(echo "$out" | sed -e 's@^Reclock file:@@' | sort -u) +if [ "$t" = "$orig_reclock" ] ; then + echo "GOOD: Recovery lock restored on all nodes" +else + echo "BAD: Recovery lock not restored on all nodes" + exit 1 +fi + +wait_until_generation_has_changed +echo "Current generation is ${generation}" |