summaryrefslogtreecommitdiff
path: root/ctdb
diff options
context:
space:
mode:
authorMartin Schwenke <martin@meltin.net>2015-03-17 20:12:22 +1100
committerAmitay Isaacs <amitay@samba.org>2015-03-23 12:23:12 +0100
commit2cb2aa58d003980af777bf37fbabbd91cf859fea (patch)
tree93cbf7a049dfe563a68120ecaea22e393f744615 /ctdb
parent16c79eb8873b4c16db3ba01f0cacfdafa54e7369 (diff)
downloadsamba-2cb2aa58d003980af777bf37fbabbd91cf859fea.tar.gz
ctdb-tests: Add "ctdb reloadnodes" unit tests
A basic test and some for cross-node consistency checking. Signed-off-by: Martin Schwenke <martin@meltin.net> Reviewed-by: Amitay Isaacs <amitay@gmail.com>
Diffstat (limited to 'ctdb')
-rw-r--r--ctdb/tests/tool/scripts/local.sh19
-rwxr-xr-xctdb/tests/tool/stubby.reloadnodes.001.sh33
-rwxr-xr-xctdb/tests/tool/stubby.reloadnodes.002.sh34
-rwxr-xr-xctdb/tests/tool/stubby.reloadnodes.003.sh37
4 files changed, 120 insertions, 3 deletions
diff --git a/ctdb/tests/tool/scripts/local.sh b/ctdb/tests/tool/scripts/local.sh
index a6df54b1b05..6cdf4c5089f 100644
--- a/ctdb/tests/tool/scripts/local.sh
+++ b/ctdb/tests/tool/scripts/local.sh
@@ -44,13 +44,26 @@ setup_natgw ()
setup_nodes ()
{
- debug "Setting up CTDB_NODES"
+ _pnn="$1"
+
+ _v="CTDB_NODES${_pnn:+_}${_pnn}"
+ debug "Setting up ${_v}"
# These will accumulate, 1 per test... but will be cleaned up at
# the end.
- export CTDB_NODES=$(mktemp --tmpdir="$TEST_VAR_DIR")
+ eval export "${_v}"=$(mktemp --tmpdir="$TEST_VAR_DIR")
+
+ eval _f="\${${_v}}"
+ cat >"$_f"
- cat >"$CTDB_NODES"
+ # You can't be too careful about what might be in the
+ # environment... so clean up when setting the default variable.
+ if [ -z "$_pnn" ] ; then
+ _n=$(wc -l "$CTDB_NODES" | awk '{ print $1 }')
+ for _i in $(seq 0 $_n) ; do
+ eval unset "CTDB_NODES_${_i}"
+ done
+ fi
}
simple_test ()
diff --git a/ctdb/tests/tool/stubby.reloadnodes.001.sh b/ctdb/tests/tool/stubby.reloadnodes.001.sh
new file mode 100755
index 00000000000..7f54de7c22c
--- /dev/null
+++ b/ctdb/tests/tool/stubby.reloadnodes.001.sh
@@ -0,0 +1,33 @@
+#!/bin/sh
+
+. "${TEST_SCRIPTS_DIR}/unit.sh"
+
+define_test "3 nodes, no change"
+
+setup_nodes <<EOF
+192.168.20.41
+192.168.20.42
+192.168.20.43
+EOF
+
+ok <<EOF
+Reloading nodes file on node 1
+ctdb_ctrl_reload_nodes_file: node 1
+Reloading nodes file on node 2
+ctdb_ctrl_reload_nodes_file: node 2
+Reloading nodes file on node 0
+ctdb_ctrl_reload_nodes_file: node 0
+EOF
+
+simple_test <<EOF
+NODEMAP
+0 192.168.20.41 0x0 CURRENT RECMASTER
+1 192.168.20.42 0x0
+2 192.168.20.43 0x0
+
+VNNMAP
+654321
+0
+1
+2
+EOF
diff --git a/ctdb/tests/tool/stubby.reloadnodes.002.sh b/ctdb/tests/tool/stubby.reloadnodes.002.sh
new file mode 100755
index 00000000000..61b14381f26
--- /dev/null
+++ b/ctdb/tests/tool/stubby.reloadnodes.002.sh
@@ -0,0 +1,34 @@
+#!/bin/sh
+
+. "${TEST_SCRIPTS_DIR}/unit.sh"
+
+define_test "3 nodes, no change, inconsistent file on 1"
+
+setup_nodes <<EOF
+192.168.20.41
+192.168.20.42
+192.168.20.43
+EOF
+
+setup_nodes 1 <<EOF
+192.168.20.41
+#192.168.20.42
+192.168.20.43
+EOF
+
+required_result 255 <<EOF
+ERROR: Node file on node 1 differs from current node (0)
+EOF
+
+simple_test <<EOF
+NODEMAP
+0 192.168.20.41 0x0 CURRENT RECMASTER
+1 192.168.20.42 0x0
+2 192.168.20.43 0x0
+
+VNNMAP
+654321
+0
+1
+2
+EOF
diff --git a/ctdb/tests/tool/stubby.reloadnodes.003.sh b/ctdb/tests/tool/stubby.reloadnodes.003.sh
new file mode 100755
index 00000000000..e5e02984fa2
--- /dev/null
+++ b/ctdb/tests/tool/stubby.reloadnodes.003.sh
@@ -0,0 +1,37 @@
+#!/bin/sh
+
+. "${TEST_SCRIPTS_DIR}/unit.sh"
+
+define_test "3 nodes, missing file on 1"
+
+setup_nodes <<EOF
+192.168.20.41
+192.168.20.42
+192.168.20.43
+EOF
+
+setup_nodes 1 <<EOF
+192.168.20.41
+#192.168.20.42
+192.168.20.43
+EOF
+
+rm "$CTDB_NODES_1"
+
+required_result 255 <<EOF
+Failed to read nodes file "${CTDB_NODES_1}"
+ERROR: Failed to get nodes file from node 1
+EOF
+
+simple_test <<EOF
+NODEMAP
+0 192.168.20.41 0x0 CURRENT RECMASTER
+1 192.168.20.42 0x0
+2 192.168.20.43 0x0
+
+VNNMAP
+654321
+0
+1
+2
+EOF