Tests - IP allocation - initial unit tests
authorMartin Schwenke <martin@meltin.net>
Thu, 15 Sep 2011 07:09:36 +0000 (17:09 +1000)
committerMartin Schwenke <martin@meltin.net>
Sun, 25 Sep 2011 04:45:48 +0000 (14:45 +1000)
Signed-off-by: Martin Schwenke <martin@meltin.net>
14 files changed:
tests/takeover/common.sh [new file with mode: 0644]
tests/takeover/run_tests.sh [new file with mode: 0755]
tests/takeover/testcases/lcp2.001.sh [new file with mode: 0755]
tests/takeover/testcases/lcp2.002.sh [new file with mode: 0755]
tests/takeover/testcases/lcp2.003.sh [new file with mode: 0755]
tests/takeover/testcases/lcp2.004.sh [new file with mode: 0755]
tests/takeover/testcases/lcp2.005.sh [new file with mode: 0755]
tests/takeover/testcases/lcp2.006.sh [new file with mode: 0755]
tests/takeover/testcases/lcp2.007.sh [new file with mode: 0755]
tests/takeover/testcases/lcp2.008.sh [new file with mode: 0755]
tests/takeover/testcases/lcp2.009.sh [new file with mode: 0755]
tests/takeover/testcases/nondet.001.sh [new file with mode: 0755]
tests/takeover/testcases/nondet.002.sh [new file with mode: 0755]
tests/takeover/testcases/nondet.003.sh [new file with mode: 0755]

diff --git a/tests/takeover/common.sh b/tests/takeover/common.sh
new file mode 100644 (file)
index 0000000..8f7fee2
--- /dev/null
@@ -0,0 +1,70 @@
+# Hey Emacs, this is a -*- shell-script -*- !!!  :-)
+
+# Print a message and exit.
+die () { echo "$@" >&2 ; exit 1 ; }
+
+test_prog="$(dirname ${TAKEOVER_TESTS_DIR})/bin/ctdb_takeover_tests ctdb_takeover_run_core"
+
+define_test ()
+{
+    _f="$0"
+    _f="${_f#./}"  # strip leading ./
+    _f="${_f#testcases/}"  # strip leading testcases/
+    _f="${_f%.sh}" # strip off .sh suffix if any
+
+    case "$_f" in
+       nondet.*)
+           algorithm="nondet"
+           CTDB_LCP2="no"
+           ;;
+       lcp2.*)
+           algorithm="lcp2"
+           export CTDB_LCP2="yes"
+           ;;
+       *)
+           die "Unknown algorithm for testcase \"$_f\""
+    esac
+
+    printf "%-12s - %s\n" "$_f" "$1"
+}
+
+required_result ()
+{
+    required_rc="${1:-0}"
+    required_output=$(cat)
+}
+
+simple_test ()
+{
+    _states="$1"
+    _out=$($test_prog $_states 2>&1)
+    _rc=$?
+
+    if [ "$algorithm" = "lcp2" -a -n "$CTDB_TEST_LOGLEVEL" ] ; then
+       OUT_FILTER='s@^.*:@DATE TIME \[PID\]:@'
+    fi
+
+    if [ -n "$OUT_FILTER" ] ; then
+       _fout=$(echo "$_out" | sed -r "$OUT_FILTER")
+    else
+       _fout="$_out"
+    fi
+
+    if [ "$_fout" = "$required_output" -a $_rc = $required_rc ] ; then
+       echo "PASSED"
+    else
+       cat <<EOF
+Algorithm: $algorithm
+
+##################################################
+Required output (Exit status: ${required_rc}):
+##################################################
+$required_output
+##################################################
+Actual output (Exit status: ${_rc}):
+##################################################
+$_out
+EOF
+       return 1
+    fi
+}
diff --git a/tests/takeover/run_tests.sh b/tests/takeover/run_tests.sh
new file mode 100755 (executable)
index 0000000..f019e8f
--- /dev/null
@@ -0,0 +1,31 @@
+#!/bin/sh
+
+# Run some IP allocation unit tests.
+
+cd $(dirname "$0")
+export TAKEOVER_TESTS_DIR=$(pwd)
+
+test_dir=$(dirname "$TAKEOVER_TESTS_DIR")
+
+opts="-d"
+
+for i ; do
+    case "$i" in
+       -*)
+           opts="$opts $i"
+           shift
+           ;;
+       *)
+           break
+    esac
+done
+
+tests=""
+if [ -z "$*" ] ; then
+    tests=$(ls testcases/*.[0-9][0-9][0-9].sh 2>/dev/null)
+fi
+
+"$test_dir/scripts/run_tests" $opts "$@" $tests || exit 1
+
+echo "All OK"
+exit 0
diff --git a/tests/takeover/testcases/lcp2.001.sh b/tests/takeover/testcases/lcp2.001.sh
new file mode 100755 (executable)
index 0000000..f792f59
--- /dev/null
@@ -0,0 +1,31 @@
+#!/bin/sh
+
+. "${TAKEOVER_TESTS_DIR}/common.sh"
+
+define_test "3 nodes, 3 -> 1 healthy"
+
+export CTDB_TEST_LOGLEVEL=0
+
+required_result <<EOF
+192.168.21.254 2
+192.168.21.253 2
+192.168.21.252 2
+192.168.20.254 2
+192.168.20.253 2
+192.168.20.252 2
+192.168.20.251 2
+192.168.20.250 2
+192.168.20.249 2
+EOF
+
+simple_test 2,2,0 <<EOF
+192.168.20.249 0
+192.168.20.250 1
+192.168.20.251 2
+192.168.20.252 0
+192.168.20.253 1
+192.168.20.254 2
+192.168.21.252 0
+192.168.21.253 1
+192.168.21.254 2
+EOF
diff --git a/tests/takeover/testcases/lcp2.002.sh b/tests/takeover/testcases/lcp2.002.sh
new file mode 100755 (executable)
index 0000000..17b85ee
--- /dev/null
@@ -0,0 +1,31 @@
+#!/bin/sh
+
+. "${TAKEOVER_TESTS_DIR}/common.sh"
+
+define_test "3 nodes, 3 -> 2 healthy"
+
+export CTDB_TEST_LOGLEVEL=0
+
+required_result <<EOF
+192.168.21.254 2
+192.168.21.253 2
+192.168.21.252 0
+192.168.20.254 2
+192.168.20.253 2
+192.168.20.252 0
+192.168.20.251 2
+192.168.20.250 0
+192.168.20.249 0
+EOF
+
+simple_test 0,2,0 <<EOF
+192.168.20.249 0
+192.168.20.250 1
+192.168.20.251 2
+192.168.20.252 0
+192.168.20.253 1
+192.168.20.254 2
+192.168.21.252 0
+192.168.21.253 1
+192.168.21.254 2
+EOF
diff --git a/tests/takeover/testcases/lcp2.003.sh b/tests/takeover/testcases/lcp2.003.sh
new file mode 100755 (executable)
index 0000000..f47ad88
--- /dev/null
@@ -0,0 +1,31 @@
+#!/bin/sh
+
+. "${TAKEOVER_TESTS_DIR}/common.sh"
+
+define_test "3 nodes, 1 -> all healthy"
+
+export CTDB_TEST_LOGLEVEL=0
+
+required_result <<EOF
+192.168.21.254 2
+192.168.21.253 0
+192.168.21.252 1
+192.168.20.254 2
+192.168.20.253 0
+192.168.20.252 1
+192.168.20.251 2
+192.168.20.250 0
+192.168.20.249 1
+EOF
+
+simple_test 0,0,0 <<EOF
+192.168.20.249 1
+192.168.20.250 1
+192.168.20.251 1
+192.168.20.252 1
+192.168.20.253 1
+192.168.20.254 1
+192.168.21.252 1
+192.168.21.253 1
+192.168.21.254 1
+EOF
diff --git a/tests/takeover/testcases/lcp2.004.sh b/tests/takeover/testcases/lcp2.004.sh
new file mode 100755 (executable)
index 0000000..a277bf6
--- /dev/null
@@ -0,0 +1,37 @@
+#!/bin/sh
+
+. "${TAKEOVER_TESTS_DIR}/common.sh"
+
+define_test "3 nodes, 1 -> all healthy, info logging"
+
+export CTDB_TEST_LOGLEVEL=3
+
+required_result <<EOF
+DATE TIME [PID]: 1 [-121363] -> 192.168.20.253 -> 0 [+0]
+DATE TIME [PID]: 1 [-105738] -> 192.168.20.251 -> 2 [+0]
+DATE TIME [PID]: 1 [-88649] -> 192.168.21.253 -> 0 [+14161]
+DATE TIME [PID]: 1 [-75448] -> 192.168.20.254 -> 2 [+15625]
+DATE TIME [PID]: 1 [-59823] -> 192.168.20.250 -> 0 [+29786]
+DATE TIME [PID]: 1 [-44198] -> 192.168.21.254 -> 2 [+28322]
+192.168.21.254 2
+192.168.21.253 0
+192.168.21.252 1
+192.168.20.254 2
+192.168.20.253 0
+192.168.20.252 1
+192.168.20.251 2
+192.168.20.250 0
+192.168.20.249 1
+EOF
+
+simple_test 0,0,0 <<EOF
+192.168.20.249 1
+192.168.20.250 1
+192.168.20.251 1
+192.168.20.252 1
+192.168.20.253 1
+192.168.20.254 1
+192.168.21.252 1
+192.168.21.253 1
+192.168.21.254 1
+EOF
diff --git a/tests/takeover/testcases/lcp2.005.sh b/tests/takeover/testcases/lcp2.005.sh
new file mode 100755 (executable)
index 0000000..e955eab
--- /dev/null
@@ -0,0 +1,163 @@
+#!/bin/sh
+
+. "${TAKEOVER_TESTS_DIR}/common.sh"
+
+define_test "3 nodes, 1 -> all healthy, debug logging"
+
+export CTDB_TEST_LOGLEVEL=4
+
+required_result <<EOF
+DATE TIME [PID]:  ----------------------------------------
+DATE TIME [PID]:  CONSIDERING MOVES (UNASSIGNED)
+DATE TIME [PID]:  ----------------------------------------
+DATE TIME [PID]:  ----------------------------------------
+DATE TIME [PID]:  CONSIDERING MOVES FROM 1 [539166]
+DATE TIME [PID]:  1 [-116718] -> 192.168.21.254 -> 0 [+0]
+DATE TIME [PID]:  1 [-116718] -> 192.168.21.254 -> 2 [+0]
+DATE TIME [PID]:  1 [-116971] -> 192.168.21.253 -> 0 [+0]
+DATE TIME [PID]:  1 [-116971] -> 192.168.21.253 -> 2 [+0]
+DATE TIME [PID]:  1 [-116971] -> 192.168.21.252 -> 0 [+0]
+DATE TIME [PID]:  1 [-116971] -> 192.168.21.252 -> 2 [+0]
+DATE TIME [PID]:  1 [-121110] -> 192.168.20.254 -> 0 [+0]
+DATE TIME [PID]:  1 [-121110] -> 192.168.20.254 -> 2 [+0]
+DATE TIME [PID]:  1 [-121363] -> 192.168.20.253 -> 0 [+0]
+DATE TIME [PID]:  1 [-121363] -> 192.168.20.253 -> 2 [+0]
+DATE TIME [PID]:  1 [-121363] -> 192.168.20.252 -> 0 [+0]
+DATE TIME [PID]:  1 [-121363] -> 192.168.20.252 -> 2 [+0]
+DATE TIME [PID]:  1 [-121363] -> 192.168.20.251 -> 0 [+0]
+DATE TIME [PID]:  1 [-121363] -> 192.168.20.251 -> 2 [+0]
+DATE TIME [PID]:  1 [-121363] -> 192.168.20.250 -> 0 [+0]
+DATE TIME [PID]:  1 [-121363] -> 192.168.20.250 -> 2 [+0]
+DATE TIME [PID]:  1 [-121110] -> 192.168.20.249 -> 0 [+0]
+DATE TIME [PID]:  1 [-121110] -> 192.168.20.249 -> 2 [+0]
+DATE TIME [PID]:  ----------------------------------------
+DATE TIME [PID]: 1 [-121363] -> 192.168.20.253 -> 0 [+0]
+DATE TIME [PID]:  ----------------------------------------
+DATE TIME [PID]:  CONSIDERING MOVES (UNASSIGNED)
+DATE TIME [PID]:  ----------------------------------------
+DATE TIME [PID]:  ----------------------------------------
+DATE TIME [PID]:  CONSIDERING MOVES FROM 1 [418056]
+DATE TIME [PID]:  1 [-102557] -> 192.168.21.254 -> 0 [+14161]
+DATE TIME [PID]:  1 [-102557] -> 192.168.21.254 -> 2 [+0]
+DATE TIME [PID]:  1 [-102810] -> 192.168.21.253 -> 0 [+14161]
+DATE TIME [PID]:  1 [-102810] -> 192.168.21.253 -> 2 [+0]
+DATE TIME [PID]:  1 [-102810] -> 192.168.21.252 -> 0 [+14161]
+DATE TIME [PID]:  1 [-102810] -> 192.168.21.252 -> 2 [+0]
+DATE TIME [PID]:  1 [-105234] -> 192.168.20.254 -> 0 [+15876]
+DATE TIME [PID]:  1 [-105234] -> 192.168.20.254 -> 2 [+0]
+DATE TIME [PID]:  1 [-105234] -> 192.168.20.252 -> 0 [+16129]
+DATE TIME [PID]:  1 [-105234] -> 192.168.20.252 -> 2 [+0]
+DATE TIME [PID]:  1 [-105738] -> 192.168.20.251 -> 0 [+15625]
+DATE TIME [PID]:  1 [-105738] -> 192.168.20.251 -> 2 [+0]
+DATE TIME [PID]:  1 [-105738] -> 192.168.20.250 -> 0 [+15625]
+DATE TIME [PID]:  1 [-105738] -> 192.168.20.250 -> 2 [+0]
+DATE TIME [PID]:  1 [-105485] -> 192.168.20.249 -> 0 [+15625]
+DATE TIME [PID]:  1 [-105485] -> 192.168.20.249 -> 2 [+0]
+DATE TIME [PID]:  ----------------------------------------
+DATE TIME [PID]: 1 [-105738] -> 192.168.20.251 -> 2 [+0]
+DATE TIME [PID]:  ----------------------------------------
+DATE TIME [PID]:  CONSIDERING MOVES (UNASSIGNED)
+DATE TIME [PID]:  ----------------------------------------
+DATE TIME [PID]:  ----------------------------------------
+DATE TIME [PID]:  CONSIDERING MOVES FROM 1 [312571]
+DATE TIME [PID]:  1 [-88396] -> 192.168.21.254 -> 0 [+14161]
+DATE TIME [PID]:  1 [-88396] -> 192.168.21.254 -> 2 [+14161]
+DATE TIME [PID]:  1 [-88649] -> 192.168.21.253 -> 0 [+14161]
+DATE TIME [PID]:  1 [-88649] -> 192.168.21.253 -> 2 [+14161]
+DATE TIME [PID]:  1 [-88649] -> 192.168.21.252 -> 0 [+14161]
+DATE TIME [PID]:  1 [-88649] -> 192.168.21.252 -> 2 [+14161]
+DATE TIME [PID]:  1 [-89609] -> 192.168.20.254 -> 0 [+15876]
+DATE TIME [PID]:  1 [-89609] -> 192.168.20.254 -> 2 [+15625]
+DATE TIME [PID]:  1 [-89609] -> 192.168.20.252 -> 0 [+16129]
+DATE TIME [PID]:  1 [-89609] -> 192.168.20.252 -> 2 [+15625]
+DATE TIME [PID]:  1 [-89609] -> 192.168.20.250 -> 0 [+15625]
+DATE TIME [PID]:  1 [-89609] -> 192.168.20.250 -> 2 [+16129]
+DATE TIME [PID]:  1 [-89609] -> 192.168.20.249 -> 0 [+15625]
+DATE TIME [PID]:  1 [-89609] -> 192.168.20.249 -> 2 [+15876]
+DATE TIME [PID]:  ----------------------------------------
+DATE TIME [PID]: 1 [-88649] -> 192.168.21.253 -> 0 [+14161]
+DATE TIME [PID]:  ----------------------------------------
+DATE TIME [PID]:  CONSIDERING MOVES (UNASSIGNED)
+DATE TIME [PID]:  ----------------------------------------
+DATE TIME [PID]:  ----------------------------------------
+DATE TIME [PID]:  CONSIDERING MOVES FROM 1 [222962]
+DATE TIME [PID]:  1 [-72520] -> 192.168.21.254 -> 0 [+30037]
+DATE TIME [PID]:  1 [-72520] -> 192.168.21.254 -> 2 [+14161]
+DATE TIME [PID]:  1 [-72520] -> 192.168.21.252 -> 0 [+30290]
+DATE TIME [PID]:  1 [-72520] -> 192.168.21.252 -> 2 [+14161]
+DATE TIME [PID]:  1 [-75448] -> 192.168.20.254 -> 0 [+30037]
+DATE TIME [PID]:  1 [-75448] -> 192.168.20.254 -> 2 [+15625]
+DATE TIME [PID]:  1 [-75448] -> 192.168.20.252 -> 0 [+30290]
+DATE TIME [PID]:  1 [-75448] -> 192.168.20.252 -> 2 [+15625]
+DATE TIME [PID]:  1 [-75448] -> 192.168.20.250 -> 0 [+29786]
+DATE TIME [PID]:  1 [-75448] -> 192.168.20.250 -> 2 [+16129]
+DATE TIME [PID]:  1 [-75448] -> 192.168.20.249 -> 0 [+29786]
+DATE TIME [PID]:  1 [-75448] -> 192.168.20.249 -> 2 [+15876]
+DATE TIME [PID]:  ----------------------------------------
+DATE TIME [PID]: 1 [-75448] -> 192.168.20.254 -> 2 [+15625]
+DATE TIME [PID]:  ----------------------------------------
+DATE TIME [PID]:  CONSIDERING MOVES (UNASSIGNED)
+DATE TIME [PID]:  ----------------------------------------
+DATE TIME [PID]:  ----------------------------------------
+DATE TIME [PID]:  CONSIDERING MOVES FROM 1 [147514]
+DATE TIME [PID]:  1 [-58359] -> 192.168.21.254 -> 0 [+30037]
+DATE TIME [PID]:  1 [-58359] -> 192.168.21.254 -> 2 [+28322]
+DATE TIME [PID]:  1 [-58359] -> 192.168.21.252 -> 0 [+30290]
+DATE TIME [PID]:  1 [-58359] -> 192.168.21.252 -> 2 [+28322]
+DATE TIME [PID]:  1 [-59572] -> 192.168.20.252 -> 0 [+30290]
+DATE TIME [PID]:  1 [-59572] -> 192.168.20.252 -> 2 [+31501]
+DATE TIME [PID]:  1 [-59823] -> 192.168.20.250 -> 0 [+29786]
+DATE TIME [PID]:  1 [-59823] -> 192.168.20.250 -> 2 [+31754]
+DATE TIME [PID]:  1 [-59823] -> 192.168.20.249 -> 0 [+29786]
+DATE TIME [PID]:  1 [-59823] -> 192.168.20.249 -> 2 [+31501]
+DATE TIME [PID]:  ----------------------------------------
+DATE TIME [PID]: 1 [-59823] -> 192.168.20.250 -> 0 [+29786]
+DATE TIME [PID]:  ----------------------------------------
+DATE TIME [PID]:  CONSIDERING MOVES (UNASSIGNED)
+DATE TIME [PID]:  ----------------------------------------
+DATE TIME [PID]:  ----------------------------------------
+DATE TIME [PID]:  CONSIDERING MOVES FROM 1 [87691]
+DATE TIME [PID]:  1 [-44198] -> 192.168.21.254 -> 0 [+44198]
+DATE TIME [PID]:  1 [-44198] -> 192.168.21.254 -> 2 [+28322]
+DATE TIME [PID]:  1 [-44198] -> 192.168.21.252 -> 0 [+44451]
+DATE TIME [PID]:  1 [-44198] -> 192.168.21.252 -> 2 [+28322]
+DATE TIME [PID]:  1 [-43947] -> 192.168.20.252 -> 0 [+45915]
+DATE TIME [PID]:  1 [-43947] -> 192.168.20.252 -> 2 [+31501]
+DATE TIME [PID]:  1 [-43947] -> 192.168.20.249 -> 0 [+45662]
+DATE TIME [PID]:  1 [-43947] -> 192.168.20.249 -> 2 [+31501]
+DATE TIME [PID]:  ----------------------------------------
+DATE TIME [PID]: 1 [-44198] -> 192.168.21.254 -> 2 [+28322]
+DATE TIME [PID]:  ----------------------------------------
+DATE TIME [PID]:  CONSIDERING MOVES (UNASSIGNED)
+DATE TIME [PID]:  ----------------------------------------
+DATE TIME [PID]:  ----------------------------------------
+DATE TIME [PID]:  CONSIDERING MOVES FROM 0 [43947]
+DATE TIME [PID]:  0 [-28322] -> 192.168.21.253 -> 0 [+28322]
+DATE TIME [PID]:  0 [-28322] -> 192.168.21.253 -> 2 [+44198]
+DATE TIME [PID]:  0 [-29786] -> 192.168.20.253 -> 0 [+29786]
+DATE TIME [PID]:  0 [-29786] -> 192.168.20.253 -> 2 [+45662]
+DATE TIME [PID]:  0 [-29786] -> 192.168.20.250 -> 0 [+29786]
+DATE TIME [PID]:  0 [-29786] -> 192.168.20.250 -> 2 [+45915]
+DATE TIME [PID]:  ----------------------------------------
+192.168.21.254 2
+192.168.21.253 0
+192.168.21.252 1
+192.168.20.254 2
+192.168.20.253 0
+192.168.20.252 1
+192.168.20.251 2
+192.168.20.250 0
+192.168.20.249 1
+EOF
+
+simple_test 0,0,0 <<EOF
+192.168.20.249 1
+192.168.20.250 1
+192.168.20.251 1
+192.168.20.252 1
+192.168.20.253 1
+192.168.20.254 1
+192.168.21.252 1
+192.168.21.253 1
+192.168.21.254 1
+EOF
diff --git a/tests/takeover/testcases/lcp2.006.sh b/tests/takeover/testcases/lcp2.006.sh
new file mode 100755 (executable)
index 0000000..639796d
--- /dev/null
@@ -0,0 +1,31 @@
+#!/bin/sh
+
+. "${TAKEOVER_TESTS_DIR}/common.sh"
+
+define_test "3 nodes, 0 -> 1 healthy"
+
+export CTDB_TEST_LOGLEVEL=0
+
+required_result <<EOF
+192.168.21.254 1
+192.168.21.253 1
+192.168.21.252 1
+192.168.20.254 1
+192.168.20.253 1
+192.168.20.252 1
+192.168.20.251 1
+192.168.20.250 1
+192.168.20.249 1
+EOF
+
+simple_test 2,0,2 <<EOF
+192.168.20.249 -1
+192.168.20.250 -1
+192.168.20.251 -1
+192.168.20.252 -1
+192.168.20.253 -1
+192.168.20.254 -1
+192.168.21.252 -1
+192.168.21.253 -1
+192.168.21.254 -1
+EOF
diff --git a/tests/takeover/testcases/lcp2.007.sh b/tests/takeover/testcases/lcp2.007.sh
new file mode 100755 (executable)
index 0000000..b15fcd8
--- /dev/null
@@ -0,0 +1,31 @@
+#!/bin/sh
+
+. "${TAKEOVER_TESTS_DIR}/common.sh"
+
+define_test "3 nodes, 0 -> 2 healthy"
+
+export CTDB_TEST_LOGLEVEL=0
+
+required_result <<EOF
+192.168.21.254 1
+192.168.21.253 2
+192.168.21.252 1
+192.168.20.254 1
+192.168.20.253 2
+192.168.20.252 1
+192.168.20.251 1
+192.168.20.250 2
+192.168.20.249 2
+EOF
+
+simple_test 2,0,0 <<EOF
+192.168.20.249 -1
+192.168.20.250 -1
+192.168.20.251 -1
+192.168.20.252 -1
+192.168.20.253 -1
+192.168.20.254 -1
+192.168.21.252 -1
+192.168.21.253 -1
+192.168.21.254 -1
+EOF
diff --git a/tests/takeover/testcases/lcp2.008.sh b/tests/takeover/testcases/lcp2.008.sh
new file mode 100755 (executable)
index 0000000..48d8532
--- /dev/null
@@ -0,0 +1,31 @@
+#!/bin/sh
+
+. "${TAKEOVER_TESTS_DIR}/common.sh"
+
+define_test "3 nodes, 0 -> all healthy"
+
+export CTDB_TEST_LOGLEVEL=0
+
+required_result <<EOF
+192.168.21.254 0
+192.168.21.253 1
+192.168.21.252 2
+192.168.20.254 0
+192.168.20.253 1
+192.168.20.252 2
+192.168.20.251 0
+192.168.20.250 1
+192.168.20.249 2
+EOF
+
+simple_test 0,0,0 <<EOF
+192.168.20.249 -1
+192.168.20.250 -1
+192.168.20.251 -1
+192.168.20.252 -1
+192.168.20.253 -1
+192.168.20.254 -1
+192.168.21.252 -1
+192.168.21.253 -1
+192.168.21.254 -1
+EOF
diff --git a/tests/takeover/testcases/lcp2.009.sh b/tests/takeover/testcases/lcp2.009.sh
new file mode 100755 (executable)
index 0000000..df70636
--- /dev/null
@@ -0,0 +1,31 @@
+#!/bin/sh
+
+. "${TAKEOVER_TESTS_DIR}/common.sh"
+
+define_test "3 nodes, 3 healthy -> all disconnected"
+
+export CTDB_TEST_LOGLEVEL=0
+
+required_result <<EOF
+192.168.21.254 -1
+192.168.21.253 -1
+192.168.21.252 -1
+192.168.20.254 -1
+192.168.20.253 -1
+192.168.20.252 -1
+192.168.20.251 -1
+192.168.20.250 -1
+192.168.20.249 -1
+EOF
+
+simple_test 1,1,1 <<EOF
+192.168.20.249 0
+192.168.20.250 1
+192.168.20.251 2
+192.168.20.252 0
+192.168.20.253 1
+192.168.20.254 2
+192.168.21.252 0
+192.168.21.253 1
+192.168.21.254 2
+EOF
diff --git a/tests/takeover/testcases/nondet.001.sh b/tests/takeover/testcases/nondet.001.sh
new file mode 100755 (executable)
index 0000000..52f4598
--- /dev/null
@@ -0,0 +1,29 @@
+#!/bin/sh
+
+. "${TAKEOVER_TESTS_DIR}/common.sh"
+
+define_test "3 nodes, 1 healthy"
+
+required_result <<EOF
+192.168.21.254 2
+192.168.21.253 2
+192.168.21.252 2
+192.168.20.254 2
+192.168.20.253 2
+192.168.20.252 2
+192.168.20.251 2
+192.168.20.250 2
+192.168.20.249 2
+EOF
+
+simple_test 2,2,0 <<EOF
+192.168.20.249 0
+192.168.20.250 1
+192.168.20.251 2
+192.168.20.252 0
+192.168.20.253 1
+192.168.20.254 2
+192.168.21.252 0
+192.168.21.253 1
+192.168.21.254 2
+EOF
diff --git a/tests/takeover/testcases/nondet.002.sh b/tests/takeover/testcases/nondet.002.sh
new file mode 100755 (executable)
index 0000000..9a4ef44
--- /dev/null
@@ -0,0 +1,29 @@
+#!/bin/sh
+
+. "${TAKEOVER_TESTS_DIR}/common.sh"
+
+define_test "3 nodes, 2 healthy"
+
+required_result <<EOF
+192.168.21.254 2
+192.168.21.253 0
+192.168.21.252 0
+192.168.20.254 2
+192.168.20.253 2
+192.168.20.252 0
+192.168.20.251 2
+192.168.20.250 0
+192.168.20.249 0
+EOF
+
+simple_test 0,2,0 <<EOF
+192.168.20.249 0
+192.168.20.250 1
+192.168.20.251 2
+192.168.20.252 0
+192.168.20.253 1
+192.168.20.254 2
+192.168.21.252 0
+192.168.21.253 1
+192.168.21.254 2
+EOF
diff --git a/tests/takeover/testcases/nondet.003.sh b/tests/takeover/testcases/nondet.003.sh
new file mode 100755 (executable)
index 0000000..b75fc6d
--- /dev/null
@@ -0,0 +1,29 @@
+#!/bin/sh
+
+. "${TAKEOVER_TESTS_DIR}/common.sh"
+
+define_test "3 nodes, 1 -> all healthy"
+
+required_result <<EOF
+192.168.21.254 0
+192.168.21.253 2
+192.168.21.252 0
+192.168.20.254 2
+192.168.20.253 0
+192.168.20.252 2
+192.168.20.251 1
+192.168.20.250 1
+192.168.20.249 1
+EOF
+
+simple_test 0,0,0 <<EOF
+192.168.20.249 1
+192.168.20.250 1
+192.168.20.251 1
+192.168.20.252 1
+192.168.20.253 1
+192.168.20.254 1
+192.168.21.252 1
+192.168.21.253 1
+192.168.21.254 1
+EOF