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>
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 ()
--- /dev/null
+#!/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
--- /dev/null
+#!/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
--- /dev/null
+#!/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