1
0
mirror of https://github.com/samba-team/samba.git synced 2025-08-26 01:49:31 +03:00

ctdb-tests: Fix logic error in simple ctdb reloadips test

There is a chance that restoring IP addresses to the test node will
result in different IP addresses being assigned to that node.
Removing a single IP address may then fail (or be a no-op) if it is
done after the restore.

So, swap the single IP address removal to happen first, then restore,
then remove all IP addresses.

BUG: https://bugzilla.samba.org/show_bug.cgi?id=13924

Signed-off-by: Martin Schwenke <martin@meltin.net>
Reviewed-by: Amitay Isaacs <amitay@gmail.com>
(cherry picked from commit dc89db8ca6)
This commit is contained in:
Martin Schwenke
2019-05-07 15:42:49 +10:00
committed by Karolin Seeger
parent 9f679ba14d
commit 24d70220b2

View File

@ -32,8 +32,6 @@ ctdb_restart_when_done
select_test_node_and_ips
echo "Emptying public addresses file on $test_node"
try_command_on_node $test_node $CTDB_TEST_WRAPPER ctdb_base_show
addresses="${out}/public_addresses"
echo "Public addresses file on node $test_node is \"$addresses\""
@ -72,44 +70,6 @@ do_ctdb_reloadips ()
done
}
try_command_on_node $test_node "mv $addresses $backup && touch $addresses"
do_ctdb_reloadips
echo "Getting list of public IPs on node $test_node"
try_command_on_node $test_node "$CTDB ip | tail -n +2"
if [ -n "$out" ] ; then
cat <<EOF
BAD: node $test_node still has ips:
$out
EOF
exit 1
fi
echo "GOOD: no IPs left on node $test_node"
try_command_on_node any $CTDB sync
echo "Restoring addresses"
restore_public_addresses
do_ctdb_reloadips
echo "Getting list of public IPs on node $test_node"
try_command_on_node $test_node "$CTDB ip | tail -n +2"
if [ -z "$out" ] ; then
echo "BAD: node $test_node has no ips"
exit 1
fi
cat <<EOF
GOOD: node $test_node has these addresses:
$out
EOF
try_command_on_node any $CTDB sync
echo "Removing IP $test_ip from node $test_node"
@ -131,3 +91,46 @@ cat <<EOF
GOOD: node $test_node is no longer hosting IP $test_ip:
$out
EOF
try_command_on_node any $CTDB sync
echo "Restoring addresses"
restore_public_addresses
do_ctdb_reloadips
echo "Getting list of public IPs on node $test_node"
try_command_on_node $test_node "$CTDB ip | tail -n +2"
if [ -z "$out" ] ; then
echo "BAD: node $test_node has no ips"
exit 1
fi
cat <<EOF
GOOD: node $test_node has these addresses:
$out
EOF
try_command_on_node any $CTDB sync
echo "Emptying public addresses file on $test_node"
try_command_on_node $test_node "mv $addresses $backup && touch $addresses"
do_ctdb_reloadips
echo "Getting list of public IPs on node $test_node"
try_command_on_node $test_node "$CTDB ip | tail -n +2"
if [ -n "$out" ] ; then
cat <<EOF
BAD: node $test_node still has ips:
$out
EOF
exit 1
fi
echo "GOOD: no IPs left on node $test_node"