tests: Try to handle IPv6 addresses for local daemons
authorMartin Schwenke <martin@meltin.net>
Wed, 26 Nov 2014 10:32:22 +0000 (21:32 +1100)
committerMartin Schwenke <martin@meltin.net>
Wed, 10 Dec 2014 04:06:08 +0000 (15:06 +1100)
If CTDB_USE_IPV6 is set then use IPv6 addresses for nodes and public
IPs.  This can be useful for some simple tests.  However, the node
address actually needs to be on lo so that ctdbd can bind to the port
on that address, so they actually need to be added as root before
running tests, like this:

  for i in $(seq 1 10) ; do ip addr add "fc00:10::${i}/64" dev lo ; done

IPv4 127.0.0.0/8 addresses are somehow magic and only one needs to be
on lo so that many can be bound to.

Also change the IPv4 node addresses to be (slightly) more exotic.

For both IPv4 and IPv6, choose addresses that are compatible with
socket wrapper.

Signed-off-by: Martin Schwenke <martin@meltin.net>
Signed-off-by: Amitay Isaacs <amitay@gmail.com> (socket wrapper fixes)
Reviewed-by: Amitay Isaacs <amitay@gmail.com>
Reviewed-by: Martin Schwenke <martin@meltin.net> (socket wrapper fixes)
(Imported from commit d9d07fff34143d251b4987cdb1cff1e8b3384e64)

tests/simple/scripts/local_daemons.bash

index 5e5e7fd7c3d3c745040a2ffe9ca73cd140eedbe1..7987134f436504a1ac083b529adfbdc53169d478 100644 (file)
@@ -67,10 +67,18 @@ setup_ctdb ()
     local i
     for i in $(seq 1 $TEST_LOCAL_DAEMONS) ; do
        if [ "${CTDB_USE_IPV6}x" != "x" ]; then
-           echo ::$i >>"$CTDB_NODES"
-           ip addr add ::$i/128 dev lo
+           j=$((printf "%02x" $i))
+           echo "fd00::5357:5f${j}" >>"$CTDB_NODES"
+           # FIXME: need to add addresses to lo as root before running :-(
+           # ip addr add "fc00:10::${i}/64" dev lo
+           # 2 public addresses on most nodes, just to make things interesting.
+           if [ $(($i - 1)) -ne $no_public_ips ] ; then
+               echo "fc00:10::1:${i}/64 lo" >>"$public_addresses_all"
+               echo "fc00:10::1:$(($i + $TEST_LOCAL_DAEMONS))/64 lo" >>"$public_addresses_all"
+           fi
        else
-           echo 127.0.0.$i >>"$CTDB_NODES"
+           j=$(( $i + 10))
+           echo 127.0.0.$j >>"$CTDB_NODES"
            # 2 public addresses on most nodes, just to make things interesting.
            if [ $(($i - 1)) -ne $no_public_ips ] ; then
                echo "192.168.234.$i/24 lo" >>"$public_addresses_all"