1
0
mirror of https://github.com/samba-team/samba.git synced 2025-01-11 05:18:09 +03:00
samba-mirror/ctdb/tests/INTEGRATION/failover/pubips.050.missing_ip.sh
Martin Schwenke 8b24cae630 ctdb-tests: Update preamble for INTEGRATION tests
* Use "#!/usr/bin/env bash" for improved portability

* Drop test_info() definition and replace it with a comment

  The use of test_info() is pointless.

* Drop call to cluster_is_healthy()

  This is a holdover from when the previous test would restart daemons
  to get things ready for a test.  There was also a bug where going
  into recovery during the restart would sometimes cause the cluster
  to become unhealthy.  If we really need something like this then we
  can add it to ctdb_test_init().

* Make order of preamble consistent

Signed-off-by: Martin Schwenke <martin@meltin.net>
Reviewed-by: Amitay Isaacs <amitay@gmail.com>
2020-07-22 07:53:35 +00:00

72 lines
2.1 KiB
Bash
Executable File

#!/usr/bin/env bash
# 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.
. "${TEST_SCRIPTS_DIR}/integration.bash"
set -e
ctdb_test_init
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"
delete_ip_from_all_nodes $test_ip
try_command_on_node -v $test_node $CTDB ipreallocate
wait_until_ips_are_on_node ! $test_node $test_ip
try_command_on_node -v all $CTDB ip
my_exit_hook ()
{
if ctdb_test_on_cluster ; then
onnode -q all $CTDB event script enable legacy "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 ctdb_test_on_cluster ; then
# Stop monitor events from bringing up the link status of an interface
try_command_on_node $test_node $CTDB event script disable legacy 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
try_command_on_node $test_node $CTDB ipreallocate
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