ctdb-tests: Add NAT gateway eventscript unit tests for static routes
authorMartin Schwenke <martin@meltin.net>
Mon, 17 Mar 2014 05:06:48 +0000 (16:06 +1100)
committerAmitay Isaacs <amitay@samba.org>
Wed, 26 Mar 2014 05:24:01 +0000 (06:24 +0100)
Signed-off-by: Martin Schwenke <martin@meltin.net>
Autobuild-User(master): Amitay Isaacs <amitay@samba.org>
Autobuild-Date(master): Wed Mar 26 06:24:01 CET 2014 on sn-devel-104

ctdb/tests/eventscripts/11.natgw.021.sh [new file with mode: 0755]
ctdb/tests/eventscripts/11.natgw.022.sh [new file with mode: 0755]
ctdb/tests/eventscripts/11.natgw.023.sh [new file with mode: 0755]
ctdb/tests/eventscripts/11.natgw.024.sh [new file with mode: 0755]
ctdb/tests/eventscripts/11.natgw.025.sh [new file with mode: 0755]
ctdb/tests/eventscripts/scripts/local.sh

diff --git a/ctdb/tests/eventscripts/11.natgw.021.sh b/ctdb/tests/eventscripts/11.natgw.021.sh
new file mode 100755 (executable)
index 0000000..5786ea7
--- /dev/null
@@ -0,0 +1,25 @@
+#!/bin/sh
+
+. "${TEST_SCRIPTS_DIR}/unit.sh"
+
+define_test "master node, static routes"
+
+setup_ctdb
+
+setup_ctdb_natgw <<EOF
+192.168.1.21 master
+192.168.1.22
+192.168.1.23
+192.168.1.24
+EOF
+
+export CTDB_NATGW_STATIC_ROUTES="10.1.1.0/24 10.1.2.0/24"
+
+ok_null
+simple_test_event "ipreallocated"
+
+ok_natgw_master_static_routes
+simple_test_command ip route show
+
+ok_natgw_master_ip_addr_show
+simple_test_command ip addr show "$CTDB_NATGW_PUBLIC_IFACE"
diff --git a/ctdb/tests/eventscripts/11.natgw.022.sh b/ctdb/tests/eventscripts/11.natgw.022.sh
new file mode 100755 (executable)
index 0000000..170ed8c
--- /dev/null
@@ -0,0 +1,25 @@
+#!/bin/sh
+
+. "${TEST_SCRIPTS_DIR}/unit.sh"
+
+define_test "slave node, static routes"
+
+setup_ctdb
+
+setup_ctdb_natgw <<EOF
+192.168.1.21
+192.168.1.22 master
+192.168.1.23
+192.168.1.24
+EOF
+
+export CTDB_NATGW_STATIC_ROUTES="10.1.1.0/24 10.1.2.0/24"
+
+ok_null
+simple_test_event "ipreallocated"
+
+ok_natgw_slave_static_routes
+simple_test_command ip route show
+
+ok_natgw_slave_ip_addr_show
+simple_test_command ip addr show "$CTDB_NATGW_PUBLIC_IFACE"
diff --git a/ctdb/tests/eventscripts/11.natgw.023.sh b/ctdb/tests/eventscripts/11.natgw.023.sh
new file mode 100755 (executable)
index 0000000..cf71c08
--- /dev/null
@@ -0,0 +1,25 @@
+#!/bin/sh
+
+. "${TEST_SCRIPTS_DIR}/unit.sh"
+
+define_test "master node, static routes, custom gateway"
+
+setup_ctdb
+
+setup_ctdb_natgw <<EOF
+192.168.1.21 master
+192.168.1.22
+192.168.1.23
+192.168.1.24
+EOF
+
+export CTDB_NATGW_STATIC_ROUTES="10.1.1.0/24 10.1.2.0/24@10.1.1.253"
+
+ok_null
+simple_test_event "ipreallocated"
+
+ok_natgw_master_static_routes
+simple_test_command ip route show
+
+ok_natgw_master_ip_addr_show
+simple_test_command ip addr show "$CTDB_NATGW_PUBLIC_IFACE"
diff --git a/ctdb/tests/eventscripts/11.natgw.024.sh b/ctdb/tests/eventscripts/11.natgw.024.sh
new file mode 100755 (executable)
index 0000000..3d2aed5
--- /dev/null
@@ -0,0 +1,25 @@
+#!/bin/sh
+
+. "${TEST_SCRIPTS_DIR}/unit.sh"
+
+define_test "slave node, static routes, custom gateway"
+
+setup_ctdb
+
+setup_ctdb_natgw <<EOF
+192.168.1.21
+192.168.1.22 master
+192.168.1.23
+192.168.1.24
+EOF
+
+export CTDB_NATGW_STATIC_ROUTES="10.1.1.0/24 10.1.2.0/24@10.1.1.253"
+
+ok_null
+simple_test_event "ipreallocated"
+
+ok_natgw_slave_static_routes
+simple_test_command ip route show
+
+ok_natgw_slave_ip_addr_show
+simple_test_command ip addr show "$CTDB_NATGW_PUBLIC_IFACE"
diff --git a/ctdb/tests/eventscripts/11.natgw.025.sh b/ctdb/tests/eventscripts/11.natgw.025.sh
new file mode 100755 (executable)
index 0000000..60602d3
--- /dev/null
@@ -0,0 +1,64 @@
+#!/bin/sh
+
+. "${TEST_SCRIPTS_DIR}/unit.sh"
+
+define_test "static routes, custom gateway, multiple transitions"
+
+setup_ctdb
+
+export CTDB_NATGW_STATIC_ROUTES="10.1.1.0/24 10.1.2.0/24@10.1.1.253"
+
+echo "*** Master node..."
+
+setup_ctdb_natgw <<EOF
+192.168.1.21 master
+192.168.1.22
+192.168.1.23
+192.168.1.24
+EOF
+
+ok_null
+simple_test_event "ipreallocated"
+
+ok_natgw_master_static_routes
+simple_test_command ip route show
+
+ok_natgw_master_ip_addr_show
+simple_test_command ip addr show "$CTDB_NATGW_PUBLIC_IFACE"
+
+echo "*** Slave node..."
+
+setup_ctdb_natgw <<EOF
+192.168.1.21
+192.168.1.22 master
+192.168.1.23
+192.168.1.24
+EOF
+
+ok_null
+simple_test_event "ipreallocated"
+
+ok_natgw_slave_static_routes
+simple_test_command ip route show
+
+ok_natgw_slave_ip_addr_show
+simple_test_command ip addr show "$CTDB_NATGW_PUBLIC_IFACE"
+
+echo "*** Master node again..."
+
+setup_ctdb_natgw <<EOF
+192.168.1.21 master
+192.168.1.22
+192.168.1.23
+192.168.1.24
+EOF
+
+ok_null
+simple_test_event "ipreallocated"
+
+ok_natgw_master_static_routes
+simple_test_command ip route show
+
+ok_natgw_master_ip_addr_show
+simple_test_command ip addr show "$CTDB_NATGW_PUBLIC_IFACE"
+
index 898405ce2a5d6088330179e3815bdd694e20bc55..4bc2e6c05a93aca97a1f7756d8ef6f3975ad13f8 100644 (file)
@@ -561,6 +561,49 @@ ok <<EOF
 EOF
 }
 
+ok_natgw_master_static_routes ()
+{
+    _nl="
+"
+    _t=""
+    for _i in $CTDB_NATGW_STATIC_ROUTES ; do
+       # This is intentionally different to the code in 11.natgw ;-)
+       case "$_i" in
+           *@*)
+               _net=$(echo "$_i" | sed -e 's|@.*||')
+               _gw=$(echo "$_i" | sed -e 's|.*@||')
+               ;;
+           *)
+               _net="$_i"
+               _gw="$CTDB_NATGW_DEFAULT_GATEWAY"
+       esac
+
+       [ -n "$_gw" ] || continue
+       _t="${_t}${_t:+${_nl}}"
+       _t="${_t}${_net} via ${_gw} dev ethXXX  metric 10 "
+    done
+    ok "$_t"
+}
+
+ok_natgw_slave_static_routes ()
+{
+    _nl="
+"
+    _t=""
+    for _i in $CTDB_NATGW_STATIC_ROUTES ; do
+       # This is intentionally different to the code in 11.natgw ;-)
+       _net=$(echo "$_i" | sed -e 's|@.*||')
+
+       # The interface for the private network isn't specified as
+       # part of the NATGW configuration and isn't part of the
+       # command to add the route.  It is implicitly added by "ip
+       # route" but our stub doesn't do this and adds "ethXXX".
+       _t="${_t}${_t:+${_nl}}"
+       _t="${_t}${_net} via ${FAKE_CTDB_NATGW_MASTER} dev ethXXX  metric 10 "
+    done
+    ok "$_t"
+}
+
 ######################################################################
 
 # Samba/winbind fakery