Test suite: new tests and code factoring.
[metze/ctdb/wip.git] / tests / complex / 41_failover_ping_discrete.sh
1 #!/bin/bash
2
3 test_info()
4 {
5     cat <<EOF
6 Verify that it is possible to ping a public address after disabling a node.
7
8 We ping a public IP, disable the node hosting it and then ping the
9 public IP again.
10
11 Prerequisites:
12
13 * An active CTDB cluster with at least 2 nodes with public addresses.
14
15 * Test must be run on a real or virtual cluster rather than against
16   local daemons.
17
18 * Test must not be run from a cluster node.
19
20 Steps:
21
22 1. Verify that the cluster is healthy.
23 2. Select a public address and its corresponding node.
24 3. Send a single ping request packet to the selected public address.
25 4. Disable the selected node.
26 5. Send another single ping request packet to the selected public address.
27
28 Expected results:
29
30 * When a node is disabled the public address fails over and the
31   address is still pingable.
32 EOF
33 }
34
35 . ctdb_test_functions.bash
36
37 set -e
38
39 ctdb_test_init "$@"
40
41 ctdb_test_check_real_cluster
42
43 cluster_is_healthy
44
45 # Reset configuration
46 ctdb_restart_when_done
47
48 select_test_node_and_ips
49
50 echo "Removing ${test_ip} from the local ARP table..."
51 arp -d $test_ip >/dev/null 2>&1 || true
52
53 echo "Pinging ${test_ip}..."
54 ping -q -n -c 1 $test_ip
55
56 gratarp_sniff_start
57
58 echo "Disabling node $test_node"
59 try_command_on_node 1 $CTDB disable -n $test_node
60 onnode 0 $CTDB_TEST_WRAPPER wait_until_node_has_status $test_node disabled
61
62 gratarp_sniff_wait_show
63
64 echo "Removing ${test_ip} from the local ARP table again..."
65 arp -d $test_ip >/dev/null 2>&1 || true
66
67 echo "Pinging ${test_ip} again..."
68 ping -q -n -c 1 $test_ip