1
0
mirror of https://github.com/samba-team/samba.git synced 2025-02-28 01:58:17 +03:00

Tests - IP allocation - initial unit tests

Signed-off-by: Martin Schwenke <martin@meltin.net>

(This used to be ctdb commit 3922225ddff90281189ebdab77620b560d233e04)
This commit is contained in:
Martin Schwenke 2011-09-15 17:09:36 +10:00
parent 87b02f5d45
commit 155862ea21
14 changed files with 605 additions and 0 deletions

View File

@ -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
}

View File

@ -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

View File

@ -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

View File

@ -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

View File

@ -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

View File

@ -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

View File

@ -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

View File

@ -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

View File

@ -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

View File

@ -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

View File

@ -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

View File

@ -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

View File

@ -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

View File

@ -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