1
0
mirror of https://github.com/samba-team/samba.git synced 2025-01-26 10:04:02 +03:00
samba-mirror/ctdb/tests/simple/60_recoverd_missing_ip.sh
Martin Schwenke 81a8758b9b ctdb-tests: Remove dependency on log ringbuffer from missing IP test
The log ringbuffer will probably be removed.  The test can be
implemented just as reliably by checking IP assignments using "ctdb
ip".

Update wait_until_ips_are_on_node() to print a more useful log
message.

Signed-off-by: Martin Schwenke <martin@meltin.net>
Reviewed-by: Amitay Isaacs <amitay@gmail.com>
2014-09-23 08:06:12 +02:00

80 lines
2.1 KiB
Bash
Executable File

#!/bin/bash
test_info()
{
cat <<EOF
Verify that the recovery daemon handles unhosted IPs properly.
This test does not do any network level checks to make sure the IP
address is actually on an interface. It just consults "ctdb ip".
This is a variation of the "addip" test.
EOF
}
. "${TEST_SCRIPTS_DIR}/integration.bash"
ctdb_test_init "$@"
set -e
cluster_is_healthy
# Reset configuration
ctdb_restart_when_done
select_test_node_and_ips
echo "Running test against node $test_node and IP $test_ip"
get_test_ip_mask_and_iface
echo "Deleting IP $test_ip from all nodes"
try_command_on_node $test_node $CTDB delip -n all $test_ip
wait_until_ips_are_on_node ! $test_node $test_ip
try_command_on_node -v all $CTDB ip
my_exit_hook ()
{
if [ -z "$TEST_LOCAL_DAEMONS" ] ; then
onnode -q all $CTDB enablescript "10.interface"
fi
}
ctdb_test_exit_hook_add my_exit_hook
# This forces us to wait until the ipreallocated associated with the
# delips is complete.
try_command_on_node $test_node $CTDB sync
# Wait for a monitor event. Then the next steps are unlikely to occur
# in the middle of a monitor event and will have the expected effect.
wait_for_monitor_event $test_node
if [ -z "$TEST_LOCAL_DAEMONS" ] ; then
# Stop monitor events from bringing up the link status of an interface
try_command_on_node $test_node $CTDB disablescript 10.interface
fi
echo "Marking interface $iface down on node $test_node"
try_command_on_node $test_node $CTDB setifacelink $iface down
echo "Adding IP $test_ip to node $test_node"
try_command_on_node $test_node $CTDB addip $test_ip/$mask $iface
echo "Wait long enough for IP verification to have taken place"
sleep_for 15
echo "Ensuring that IP ${test_ip} is not hosted on node ${test_node} when interface is down"
if ips_are_on_node '!' $test_node $test_ip; then
echo "GOOD: the IP has not been hosted while the interface is down"
else
echo "BAD: the IP is hosted but the interface is down"
exit 1
fi
echo "Marking interface $iface up on node $test_node"
try_command_on_node $test_node $CTDB setifacelink $iface up
wait_until_ips_are_on_node $test_node $test_ip