From df39a671db2a88de7e6b1e9a9ce4885f2b9bb393 Mon Sep 17 00:00:00 2001 From: Martin Schwenke Date: Mon, 16 Apr 2012 16:24:12 +1000 Subject: tests/eventscripts - Restructure according to new convention Signed-off-by: Martin Schwenke (This used to be ctdb commit eb13507713ba6732271b7c3024bfddbda6da5ffc) --- ctdb/tests/eventscripts/10.interface.init.001.sh | 13 + ctdb/tests/eventscripts/10.interface.init.002.sh | 11 + .../tests/eventscripts/10.interface.monitor.001.sh | 13 + .../tests/eventscripts/10.interface.monitor.002.sh | 11 + .../tests/eventscripts/10.interface.monitor.003.sh | 15 + .../tests/eventscripts/10.interface.monitor.004.sh | 15 + .../tests/eventscripts/10.interface.monitor.005.sh | 15 + .../tests/eventscripts/10.interface.monitor.006.sh | 15 + .../tests/eventscripts/10.interface.monitor.007.sh | 13 + .../tests/eventscripts/10.interface.monitor.008.sh | 15 + .../tests/eventscripts/10.interface.monitor.009.sh | 17 + .../tests/eventscripts/10.interface.monitor.010.sh | 19 + .../tests/eventscripts/10.interface.monitor.011.sh | 19 + .../tests/eventscripts/10.interface.monitor.012.sh | 23 + .../tests/eventscripts/10.interface.monitor.013.sh | 15 + .../tests/eventscripts/10.interface.monitor.014.sh | 16 + .../tests/eventscripts/10.interface.monitor.015.sh | 22 + ctdb/tests/eventscripts/10.interface.multi.001.sh | 14 + .../eventscripts/10.interface.releaseip.001.sh | 13 + .../eventscripts/10.interface.releaseip.002.sh | 17 + .../tests/eventscripts/10.interface.startup.001.sh | 13 + .../tests/eventscripts/10.interface.startup.002.sh | 11 + ctdb/tests/eventscripts/10.interface.takeip.001.sh | 13 + ctdb/tests/eventscripts/10.interface.takeip.002.sh | 13 + ctdb/tests/eventscripts/10.interface.takeip.003.sh | 25 + ctdb/tests/eventscripts/13.per_ip_routing.001.sh | 16 + ctdb/tests/eventscripts/13.per_ip_routing.002.sh | 14 + ctdb/tests/eventscripts/13.per_ip_routing.003.sh | 24 + ctdb/tests/eventscripts/13.per_ip_routing.004.sh | 25 + ctdb/tests/eventscripts/13.per_ip_routing.005.sh | 38 + ctdb/tests/eventscripts/13.per_ip_routing.006.sh | 38 + ctdb/tests/eventscripts/13.per_ip_routing.007.sh | 40 + ctdb/tests/eventscripts/13.per_ip_routing.008.sh | 42 + ctdb/tests/eventscripts/13.per_ip_routing.009.sh | 44 + ctdb/tests/eventscripts/13.per_ip_routing.010.sh | 52 ++ ctdb/tests/eventscripts/13.per_ip_routing.011.sh | 41 + ctdb/tests/eventscripts/13.per_ip_routing.012.sh | 48 ++ ctdb/tests/eventscripts/40.vsftpd.monitor.001.sh | 11 + ctdb/tests/eventscripts/41.httpd.monitor.001.sh | 11 + ctdb/tests/eventscripts/50.samba.monitor.001.sh | 11 + ctdb/tests/eventscripts/50.samba.monitor.050.sh | 17 + ctdb/tests/eventscripts/50.samba.monitor.051.sh | 19 + ctdb/tests/eventscripts/50.samba.monitor.101.sh | 11 + ctdb/tests/eventscripts/50.samba.monitor.102.sh | 12 + ctdb/tests/eventscripts/50.samba.monitor.103.sh | 12 + ctdb/tests/eventscripts/50.samba.monitor.104.sh | 12 + ctdb/tests/eventscripts/50.samba.monitor.105.sh | 12 + ctdb/tests/eventscripts/50.samba.monitor.106.sh | 14 + ctdb/tests/eventscripts/50.samba.monitor.107.sh | 18 + ctdb/tests/eventscripts/50.samba.monitor.108.sh | 15 + ctdb/tests/eventscripts/50.samba.monitor.109.sh | 30 + ctdb/tests/eventscripts/50.samba.monitor.110.sh | 33 + ctdb/tests/eventscripts/50.samba.monitor.111.sh | 20 + ctdb/tests/eventscripts/60.nfs.monitor.001.sh | 11 + ctdb/tests/eventscripts/60.nfs.monitor.100.sh | 19 + ctdb/tests/eventscripts/60.nfs.monitor.101.sh | 11 + ctdb/tests/eventscripts/60.nfs.monitor.111.sh | 12 + ctdb/tests/eventscripts/60.nfs.monitor.112.sh | 15 + ctdb/tests/eventscripts/60.nfs.monitor.121.sh | 17 + ctdb/tests/eventscripts/60.nfs.monitor.122.sh | 19 + ctdb/tests/eventscripts/60.nfs.monitor.131.sh | 10 + ctdb/tests/eventscripts/60.nfs.monitor.132.sh | 15 + ctdb/tests/eventscripts/60.nfs.monitor.141.sh | 15 + ctdb/tests/eventscripts/60.nfs.monitor.142.sh | 14 + ctdb/tests/eventscripts/60.nfs.monitor.151.sh | 12 + ctdb/tests/eventscripts/60.nfs.monitor.152.sh | 18 + ctdb/tests/eventscripts/60.nfs.monitor.153.sh | 15 + ctdb/tests/eventscripts/60.nfs.monitor.161.sh | 13 + ctdb/tests/eventscripts/60.nfs.monitor.162.sh | 14 + ctdb/tests/eventscripts/60.nfs.multi.001.sh | 21 + ctdb/tests/eventscripts/60.nfs.multi.002.sh | 25 + ctdb/tests/eventscripts/60.nfs.multi.003.sh | 27 + ctdb/tests/eventscripts/60.nfs.multi.004.sh | 27 + ctdb/tests/eventscripts/60.nfs.multi.005.sh | 27 + ctdb/tests/eventscripts/60.nfs.multi.006.sh | 21 + ctdb/tests/eventscripts/common.sh | 938 --------------------- .../eventscripts/multievent/10.interface.001.sh | 14 - .../multievent/13.per_ip_routing.001.sh | 16 - .../multievent/13.per_ip_routing.002.sh | 14 - .../multievent/13.per_ip_routing.003.sh | 24 - .../multievent/13.per_ip_routing.004.sh | 25 - .../multievent/13.per_ip_routing.005.sh | 38 - .../multievent/13.per_ip_routing.006.sh | 38 - .../multievent/13.per_ip_routing.007.sh | 40 - .../multievent/13.per_ip_routing.008.sh | 42 - .../multievent/13.per_ip_routing.009.sh | 44 - .../multievent/13.per_ip_routing.010.sh | 52 -- .../multievent/13.per_ip_routing.011.sh | 41 - .../multievent/13.per_ip_routing.012.sh | 48 -- ctdb/tests/eventscripts/multievent/60.nfs.001.sh | 21 - ctdb/tests/eventscripts/multievent/60.nfs.002.sh | 25 - ctdb/tests/eventscripts/multievent/60.nfs.003.sh | 27 - ctdb/tests/eventscripts/multievent/60.nfs.004.sh | 27 - ctdb/tests/eventscripts/multievent/60.nfs.005.sh | 27 - ctdb/tests/eventscripts/multievent/60.nfs.006.sh | 21 - ctdb/tests/eventscripts/scripts/local.sh | 914 ++++++++++++++++++++ .../eventscripts/simple/10.interface.init.001.sh | 13 - .../eventscripts/simple/10.interface.init.002.sh | 11 - .../simple/10.interface.monitor.001.sh | 13 - .../simple/10.interface.monitor.002.sh | 11 - .../simple/10.interface.monitor.003.sh | 15 - .../simple/10.interface.monitor.004.sh | 15 - .../simple/10.interface.monitor.005.sh | 15 - .../simple/10.interface.monitor.006.sh | 15 - .../simple/10.interface.monitor.007.sh | 13 - .../simple/10.interface.monitor.008.sh | 15 - .../simple/10.interface.monitor.009.sh | 17 - .../simple/10.interface.monitor.010.sh | 19 - .../simple/10.interface.monitor.011.sh | 19 - .../simple/10.interface.monitor.012.sh | 23 - .../simple/10.interface.monitor.013.sh | 15 - .../simple/10.interface.monitor.014.sh | 16 - .../simple/10.interface.monitor.015.sh | 22 - .../simple/10.interface.releaseip.001.sh | 13 - .../simple/10.interface.releaseip.002.sh | 17 - .../simple/10.interface.startup.001.sh | 13 - .../simple/10.interface.startup.002.sh | 11 - .../eventscripts/simple/10.interface.takeip.001.sh | 13 - .../eventscripts/simple/10.interface.takeip.002.sh | 13 - .../eventscripts/simple/10.interface.takeip.003.sh | 25 - .../eventscripts/simple/40.vsftpd.monitor.001.sh | 11 - .../eventscripts/simple/41.httpd.monitor.001.sh | 11 - .../eventscripts/simple/50.samba.monitor.001.sh | 11 - .../eventscripts/simple/50.samba.monitor.050.sh | 17 - .../eventscripts/simple/50.samba.monitor.051.sh | 19 - .../eventscripts/simple/50.samba.monitor.101.sh | 11 - .../eventscripts/simple/50.samba.monitor.102.sh | 12 - .../eventscripts/simple/50.samba.monitor.103.sh | 12 - .../eventscripts/simple/50.samba.monitor.104.sh | 12 - .../eventscripts/simple/50.samba.monitor.105.sh | 12 - .../eventscripts/simple/50.samba.monitor.106.sh | 14 - .../eventscripts/simple/50.samba.monitor.107.sh | 18 - .../eventscripts/simple/50.samba.monitor.108.sh | 15 - .../eventscripts/simple/50.samba.monitor.109.sh | 30 - .../eventscripts/simple/50.samba.monitor.110.sh | 33 - .../eventscripts/simple/50.samba.monitor.111.sh | 20 - .../eventscripts/simple/60.nfs.monitor.001.sh | 11 - .../eventscripts/simple/60.nfs.monitor.100.sh | 19 - .../eventscripts/simple/60.nfs.monitor.101.sh | 11 - .../eventscripts/simple/60.nfs.monitor.111.sh | 12 - .../eventscripts/simple/60.nfs.monitor.112.sh | 15 - .../eventscripts/simple/60.nfs.monitor.121.sh | 17 - .../eventscripts/simple/60.nfs.monitor.122.sh | 19 - .../eventscripts/simple/60.nfs.monitor.131.sh | 10 - .../eventscripts/simple/60.nfs.monitor.132.sh | 15 - .../eventscripts/simple/60.nfs.monitor.141.sh | 15 - .../eventscripts/simple/60.nfs.monitor.142.sh | 14 - .../eventscripts/simple/60.nfs.monitor.151.sh | 12 - .../eventscripts/simple/60.nfs.monitor.152.sh | 18 - .../eventscripts/simple/60.nfs.monitor.153.sh | 15 - .../eventscripts/simple/60.nfs.monitor.161.sh | 13 - .../eventscripts/simple/60.nfs.monitor.162.sh | 14 - ctdb/tests/eventscripts/stubs/ctdb | 2 +- 153 files changed, 2359 insertions(+), 2383 deletions(-) create mode 100755 ctdb/tests/eventscripts/10.interface.init.001.sh create mode 100755 ctdb/tests/eventscripts/10.interface.init.002.sh create mode 100755 ctdb/tests/eventscripts/10.interface.monitor.001.sh create mode 100755 ctdb/tests/eventscripts/10.interface.monitor.002.sh create mode 100755 ctdb/tests/eventscripts/10.interface.monitor.003.sh create mode 100755 ctdb/tests/eventscripts/10.interface.monitor.004.sh create mode 100755 ctdb/tests/eventscripts/10.interface.monitor.005.sh create mode 100755 ctdb/tests/eventscripts/10.interface.monitor.006.sh create mode 100755 ctdb/tests/eventscripts/10.interface.monitor.007.sh create mode 100755 ctdb/tests/eventscripts/10.interface.monitor.008.sh create mode 100755 ctdb/tests/eventscripts/10.interface.monitor.009.sh create mode 100755 ctdb/tests/eventscripts/10.interface.monitor.010.sh create mode 100755 ctdb/tests/eventscripts/10.interface.monitor.011.sh create mode 100755 ctdb/tests/eventscripts/10.interface.monitor.012.sh create mode 100755 ctdb/tests/eventscripts/10.interface.monitor.013.sh create mode 100755 ctdb/tests/eventscripts/10.interface.monitor.014.sh create mode 100755 ctdb/tests/eventscripts/10.interface.monitor.015.sh create mode 100755 ctdb/tests/eventscripts/10.interface.multi.001.sh create mode 100755 ctdb/tests/eventscripts/10.interface.releaseip.001.sh create mode 100755 ctdb/tests/eventscripts/10.interface.releaseip.002.sh create mode 100755 ctdb/tests/eventscripts/10.interface.startup.001.sh create mode 100755 ctdb/tests/eventscripts/10.interface.startup.002.sh create mode 100755 ctdb/tests/eventscripts/10.interface.takeip.001.sh create mode 100755 ctdb/tests/eventscripts/10.interface.takeip.002.sh create mode 100755 ctdb/tests/eventscripts/10.interface.takeip.003.sh create mode 100755 ctdb/tests/eventscripts/13.per_ip_routing.001.sh create mode 100755 ctdb/tests/eventscripts/13.per_ip_routing.002.sh create mode 100755 ctdb/tests/eventscripts/13.per_ip_routing.003.sh create mode 100755 ctdb/tests/eventscripts/13.per_ip_routing.004.sh create mode 100755 ctdb/tests/eventscripts/13.per_ip_routing.005.sh create mode 100755 ctdb/tests/eventscripts/13.per_ip_routing.006.sh create mode 100755 ctdb/tests/eventscripts/13.per_ip_routing.007.sh create mode 100755 ctdb/tests/eventscripts/13.per_ip_routing.008.sh create mode 100755 ctdb/tests/eventscripts/13.per_ip_routing.009.sh create mode 100755 ctdb/tests/eventscripts/13.per_ip_routing.010.sh create mode 100755 ctdb/tests/eventscripts/13.per_ip_routing.011.sh create mode 100755 ctdb/tests/eventscripts/13.per_ip_routing.012.sh create mode 100755 ctdb/tests/eventscripts/40.vsftpd.monitor.001.sh create mode 100755 ctdb/tests/eventscripts/41.httpd.monitor.001.sh create mode 100755 ctdb/tests/eventscripts/50.samba.monitor.001.sh create mode 100755 ctdb/tests/eventscripts/50.samba.monitor.050.sh create mode 100755 ctdb/tests/eventscripts/50.samba.monitor.051.sh create mode 100755 ctdb/tests/eventscripts/50.samba.monitor.101.sh create mode 100755 ctdb/tests/eventscripts/50.samba.monitor.102.sh create mode 100755 ctdb/tests/eventscripts/50.samba.monitor.103.sh create mode 100755 ctdb/tests/eventscripts/50.samba.monitor.104.sh create mode 100755 ctdb/tests/eventscripts/50.samba.monitor.105.sh create mode 100755 ctdb/tests/eventscripts/50.samba.monitor.106.sh create mode 100755 ctdb/tests/eventscripts/50.samba.monitor.107.sh create mode 100755 ctdb/tests/eventscripts/50.samba.monitor.108.sh create mode 100755 ctdb/tests/eventscripts/50.samba.monitor.109.sh create mode 100755 ctdb/tests/eventscripts/50.samba.monitor.110.sh create mode 100755 ctdb/tests/eventscripts/50.samba.monitor.111.sh create mode 100755 ctdb/tests/eventscripts/60.nfs.monitor.001.sh create mode 100755 ctdb/tests/eventscripts/60.nfs.monitor.100.sh create mode 100755 ctdb/tests/eventscripts/60.nfs.monitor.101.sh create mode 100755 ctdb/tests/eventscripts/60.nfs.monitor.111.sh create mode 100755 ctdb/tests/eventscripts/60.nfs.monitor.112.sh create mode 100755 ctdb/tests/eventscripts/60.nfs.monitor.121.sh create mode 100755 ctdb/tests/eventscripts/60.nfs.monitor.122.sh create mode 100755 ctdb/tests/eventscripts/60.nfs.monitor.131.sh create mode 100755 ctdb/tests/eventscripts/60.nfs.monitor.132.sh create mode 100755 ctdb/tests/eventscripts/60.nfs.monitor.141.sh create mode 100755 ctdb/tests/eventscripts/60.nfs.monitor.142.sh create mode 100755 ctdb/tests/eventscripts/60.nfs.monitor.151.sh create mode 100755 ctdb/tests/eventscripts/60.nfs.monitor.152.sh create mode 100755 ctdb/tests/eventscripts/60.nfs.monitor.153.sh create mode 100755 ctdb/tests/eventscripts/60.nfs.monitor.161.sh create mode 100755 ctdb/tests/eventscripts/60.nfs.monitor.162.sh create mode 100755 ctdb/tests/eventscripts/60.nfs.multi.001.sh create mode 100755 ctdb/tests/eventscripts/60.nfs.multi.002.sh create mode 100755 ctdb/tests/eventscripts/60.nfs.multi.003.sh create mode 100755 ctdb/tests/eventscripts/60.nfs.multi.004.sh create mode 100755 ctdb/tests/eventscripts/60.nfs.multi.005.sh create mode 100755 ctdb/tests/eventscripts/60.nfs.multi.006.sh delete mode 100644 ctdb/tests/eventscripts/common.sh delete mode 100755 ctdb/tests/eventscripts/multievent/10.interface.001.sh delete mode 100755 ctdb/tests/eventscripts/multievent/13.per_ip_routing.001.sh delete mode 100755 ctdb/tests/eventscripts/multievent/13.per_ip_routing.002.sh delete mode 100755 ctdb/tests/eventscripts/multievent/13.per_ip_routing.003.sh delete mode 100755 ctdb/tests/eventscripts/multievent/13.per_ip_routing.004.sh delete mode 100755 ctdb/tests/eventscripts/multievent/13.per_ip_routing.005.sh delete mode 100755 ctdb/tests/eventscripts/multievent/13.per_ip_routing.006.sh delete mode 100755 ctdb/tests/eventscripts/multievent/13.per_ip_routing.007.sh delete mode 100755 ctdb/tests/eventscripts/multievent/13.per_ip_routing.008.sh delete mode 100755 ctdb/tests/eventscripts/multievent/13.per_ip_routing.009.sh delete mode 100755 ctdb/tests/eventscripts/multievent/13.per_ip_routing.010.sh delete mode 100755 ctdb/tests/eventscripts/multievent/13.per_ip_routing.011.sh delete mode 100755 ctdb/tests/eventscripts/multievent/13.per_ip_routing.012.sh delete mode 100755 ctdb/tests/eventscripts/multievent/60.nfs.001.sh delete mode 100755 ctdb/tests/eventscripts/multievent/60.nfs.002.sh delete mode 100755 ctdb/tests/eventscripts/multievent/60.nfs.003.sh delete mode 100755 ctdb/tests/eventscripts/multievent/60.nfs.004.sh delete mode 100755 ctdb/tests/eventscripts/multievent/60.nfs.005.sh delete mode 100755 ctdb/tests/eventscripts/multievent/60.nfs.006.sh create mode 100644 ctdb/tests/eventscripts/scripts/local.sh delete mode 100755 ctdb/tests/eventscripts/simple/10.interface.init.001.sh delete mode 100755 ctdb/tests/eventscripts/simple/10.interface.init.002.sh delete mode 100755 ctdb/tests/eventscripts/simple/10.interface.monitor.001.sh delete mode 100755 ctdb/tests/eventscripts/simple/10.interface.monitor.002.sh delete mode 100755 ctdb/tests/eventscripts/simple/10.interface.monitor.003.sh delete mode 100755 ctdb/tests/eventscripts/simple/10.interface.monitor.004.sh delete mode 100755 ctdb/tests/eventscripts/simple/10.interface.monitor.005.sh delete mode 100755 ctdb/tests/eventscripts/simple/10.interface.monitor.006.sh delete mode 100755 ctdb/tests/eventscripts/simple/10.interface.monitor.007.sh delete mode 100755 ctdb/tests/eventscripts/simple/10.interface.monitor.008.sh delete mode 100755 ctdb/tests/eventscripts/simple/10.interface.monitor.009.sh delete mode 100755 ctdb/tests/eventscripts/simple/10.interface.monitor.010.sh delete mode 100755 ctdb/tests/eventscripts/simple/10.interface.monitor.011.sh delete mode 100755 ctdb/tests/eventscripts/simple/10.interface.monitor.012.sh delete mode 100755 ctdb/tests/eventscripts/simple/10.interface.monitor.013.sh delete mode 100755 ctdb/tests/eventscripts/simple/10.interface.monitor.014.sh delete mode 100755 ctdb/tests/eventscripts/simple/10.interface.monitor.015.sh delete mode 100755 ctdb/tests/eventscripts/simple/10.interface.releaseip.001.sh delete mode 100755 ctdb/tests/eventscripts/simple/10.interface.releaseip.002.sh delete mode 100755 ctdb/tests/eventscripts/simple/10.interface.startup.001.sh delete mode 100755 ctdb/tests/eventscripts/simple/10.interface.startup.002.sh delete mode 100755 ctdb/tests/eventscripts/simple/10.interface.takeip.001.sh delete mode 100755 ctdb/tests/eventscripts/simple/10.interface.takeip.002.sh delete mode 100755 ctdb/tests/eventscripts/simple/10.interface.takeip.003.sh delete mode 100755 ctdb/tests/eventscripts/simple/40.vsftpd.monitor.001.sh delete mode 100755 ctdb/tests/eventscripts/simple/41.httpd.monitor.001.sh delete mode 100755 ctdb/tests/eventscripts/simple/50.samba.monitor.001.sh delete mode 100755 ctdb/tests/eventscripts/simple/50.samba.monitor.050.sh delete mode 100755 ctdb/tests/eventscripts/simple/50.samba.monitor.051.sh delete mode 100755 ctdb/tests/eventscripts/simple/50.samba.monitor.101.sh delete mode 100755 ctdb/tests/eventscripts/simple/50.samba.monitor.102.sh delete mode 100755 ctdb/tests/eventscripts/simple/50.samba.monitor.103.sh delete mode 100755 ctdb/tests/eventscripts/simple/50.samba.monitor.104.sh delete mode 100755 ctdb/tests/eventscripts/simple/50.samba.monitor.105.sh delete mode 100755 ctdb/tests/eventscripts/simple/50.samba.monitor.106.sh delete mode 100755 ctdb/tests/eventscripts/simple/50.samba.monitor.107.sh delete mode 100755 ctdb/tests/eventscripts/simple/50.samba.monitor.108.sh delete mode 100755 ctdb/tests/eventscripts/simple/50.samba.monitor.109.sh delete mode 100755 ctdb/tests/eventscripts/simple/50.samba.monitor.110.sh delete mode 100755 ctdb/tests/eventscripts/simple/50.samba.monitor.111.sh delete mode 100755 ctdb/tests/eventscripts/simple/60.nfs.monitor.001.sh delete mode 100755 ctdb/tests/eventscripts/simple/60.nfs.monitor.100.sh delete mode 100755 ctdb/tests/eventscripts/simple/60.nfs.monitor.101.sh delete mode 100755 ctdb/tests/eventscripts/simple/60.nfs.monitor.111.sh delete mode 100755 ctdb/tests/eventscripts/simple/60.nfs.monitor.112.sh delete mode 100755 ctdb/tests/eventscripts/simple/60.nfs.monitor.121.sh delete mode 100755 ctdb/tests/eventscripts/simple/60.nfs.monitor.122.sh delete mode 100755 ctdb/tests/eventscripts/simple/60.nfs.monitor.131.sh delete mode 100755 ctdb/tests/eventscripts/simple/60.nfs.monitor.132.sh delete mode 100755 ctdb/tests/eventscripts/simple/60.nfs.monitor.141.sh delete mode 100755 ctdb/tests/eventscripts/simple/60.nfs.monitor.142.sh delete mode 100755 ctdb/tests/eventscripts/simple/60.nfs.monitor.151.sh delete mode 100755 ctdb/tests/eventscripts/simple/60.nfs.monitor.152.sh delete mode 100755 ctdb/tests/eventscripts/simple/60.nfs.monitor.153.sh delete mode 100755 ctdb/tests/eventscripts/simple/60.nfs.monitor.161.sh delete mode 100755 ctdb/tests/eventscripts/simple/60.nfs.monitor.162.sh diff --git a/ctdb/tests/eventscripts/10.interface.init.001.sh b/ctdb/tests/eventscripts/10.interface.init.001.sh new file mode 100755 index 00000000000..fae1a78d506 --- /dev/null +++ b/ctdb/tests/eventscripts/10.interface.init.001.sh @@ -0,0 +1,13 @@ +#!/bin/sh + +. "${TEST_SCRIPTS_DIR}/unit.sh" + +define_test "no public addresses" + +setup_ctdb + +export CTDB_PUBLIC_ADDRESSES="$CTDB_ETC/does/not/exist" + +ok "No public addresses file found. Nothing to do for 10.interfaces" + +simple_test diff --git a/ctdb/tests/eventscripts/10.interface.init.002.sh b/ctdb/tests/eventscripts/10.interface.init.002.sh new file mode 100755 index 00000000000..ba33f927c3f --- /dev/null +++ b/ctdb/tests/eventscripts/10.interface.init.002.sh @@ -0,0 +1,11 @@ +#!/bin/sh + +. "${TEST_SCRIPTS_DIR}/unit.sh" + +define_test "all interfaces up" + +setup_ctdb + +ok_null + +simple_test diff --git a/ctdb/tests/eventscripts/10.interface.monitor.001.sh b/ctdb/tests/eventscripts/10.interface.monitor.001.sh new file mode 100755 index 00000000000..42ef42d81b4 --- /dev/null +++ b/ctdb/tests/eventscripts/10.interface.monitor.001.sh @@ -0,0 +1,13 @@ +#!/bin/sh + +. "${TEST_SCRIPTS_DIR}/unit.sh" + +define_test "no public addresses" + +setup_ctdb + +export CTDB_PUBLIC_ADDRESSES="$CTDB_ETC/does/not/exist" + +ok_null + +simple_test diff --git a/ctdb/tests/eventscripts/10.interface.monitor.002.sh b/ctdb/tests/eventscripts/10.interface.monitor.002.sh new file mode 100755 index 00000000000..ba33f927c3f --- /dev/null +++ b/ctdb/tests/eventscripts/10.interface.monitor.002.sh @@ -0,0 +1,11 @@ +#!/bin/sh + +. "${TEST_SCRIPTS_DIR}/unit.sh" + +define_test "all interfaces up" + +setup_ctdb + +ok_null + +simple_test diff --git a/ctdb/tests/eventscripts/10.interface.monitor.003.sh b/ctdb/tests/eventscripts/10.interface.monitor.003.sh new file mode 100755 index 00000000000..1eb7916b932 --- /dev/null +++ b/ctdb/tests/eventscripts/10.interface.monitor.003.sh @@ -0,0 +1,15 @@ +#!/bin/sh + +. "${TEST_SCRIPTS_DIR}/unit.sh" + +define_test "1 interface down" + +setup_ctdb + +iface=$(ctdb_get_1_interface) + +ethtool_interfaces_down $iface + +required_result 1 "ERROR: No link on the public network interface $iface" + +simple_test diff --git a/ctdb/tests/eventscripts/10.interface.monitor.004.sh b/ctdb/tests/eventscripts/10.interface.monitor.004.sh new file mode 100755 index 00000000000..69ffbd00cd5 --- /dev/null +++ b/ctdb/tests/eventscripts/10.interface.monitor.004.sh @@ -0,0 +1,15 @@ +#!/bin/sh + +. "${TEST_SCRIPTS_DIR}/unit.sh" + +define_test "all interfaces up, 1 is a bond" + +setup_ctdb + +iface=$(ctdb_get_1_interface) + +setup_bond $iface + +ok_null + +simple_test diff --git a/ctdb/tests/eventscripts/10.interface.monitor.005.sh b/ctdb/tests/eventscripts/10.interface.monitor.005.sh new file mode 100755 index 00000000000..8cf7bbc9c0a --- /dev/null +++ b/ctdb/tests/eventscripts/10.interface.monitor.005.sh @@ -0,0 +1,15 @@ +#!/bin/sh + +. "${TEST_SCRIPTS_DIR}/unit.sh" + +define_test "1 bond, no active slaves" + +setup_ctdb + +iface=$(ctdb_get_1_interface) + +setup_bond $iface "None" + +required_result 1 "ERROR: No active slaves for bond device $iface" + +simple_test diff --git a/ctdb/tests/eventscripts/10.interface.monitor.006.sh b/ctdb/tests/eventscripts/10.interface.monitor.006.sh new file mode 100755 index 00000000000..3c483a3516f --- /dev/null +++ b/ctdb/tests/eventscripts/10.interface.monitor.006.sh @@ -0,0 +1,15 @@ +#!/bin/sh + +. "${TEST_SCRIPTS_DIR}/unit.sh" + +define_test "1 bond, active slaves, link down" + +setup_ctdb + +iface=$(ctdb_get_1_interface) + +setup_bond $iface "" "down" + +required_result 1 "ERROR: public network interface $iface is down" + +simple_test diff --git a/ctdb/tests/eventscripts/10.interface.monitor.007.sh b/ctdb/tests/eventscripts/10.interface.monitor.007.sh new file mode 100755 index 00000000000..c45900e3b2e --- /dev/null +++ b/ctdb/tests/eventscripts/10.interface.monitor.007.sh @@ -0,0 +1,13 @@ +#!/bin/sh + +. "${TEST_SCRIPTS_DIR}/unit.sh" + +define_test "unknown interface, up" + +setup_ctdb + +export CTDB_PUBLIC_INTERFACE="dev999" + +ok_null + +simple_test diff --git a/ctdb/tests/eventscripts/10.interface.monitor.008.sh b/ctdb/tests/eventscripts/10.interface.monitor.008.sh new file mode 100755 index 00000000000..f73302b30da --- /dev/null +++ b/ctdb/tests/eventscripts/10.interface.monitor.008.sh @@ -0,0 +1,15 @@ +#!/bin/sh + +. "${TEST_SCRIPTS_DIR}/unit.sh" + +define_test "unknown interface, down, up" + +setup_ctdb + +iface="dev999" +export CTDB_PUBLIC_INTERFACE="$iface" + +#EVENTSCRIPTS_TESTS_TRACE="sh -x" +iterate_test 3 "ok_null" \ + 1 'ethtool_interfaces_down "$iface" ; required_result 1 "ERROR: No link on the public network interface $iface"' \ + 2 'ethtool_interfaces_up "$iface"' diff --git a/ctdb/tests/eventscripts/10.interface.monitor.009.sh b/ctdb/tests/eventscripts/10.interface.monitor.009.sh new file mode 100755 index 00000000000..1b785ffdc80 --- /dev/null +++ b/ctdb/tests/eventscripts/10.interface.monitor.009.sh @@ -0,0 +1,17 @@ +#!/bin/sh + +. "${TEST_SCRIPTS_DIR}/unit.sh" + +define_test "CTDB_PARTIALLY_ONLINE_INTERFACES, 1 down" + +setup_ctdb + +iface=$(ctdb_get_1_interface) + +export CTDB_PARTIALLY_ONLINE_INTERFACES="yes" + +ethtool_interfaces_down "$iface" + +ok "ERROR: No link on the public network interface $iface" + +simple_test diff --git a/ctdb/tests/eventscripts/10.interface.monitor.010.sh b/ctdb/tests/eventscripts/10.interface.monitor.010.sh new file mode 100755 index 00000000000..4d233193fb6 --- /dev/null +++ b/ctdb/tests/eventscripts/10.interface.monitor.010.sh @@ -0,0 +1,19 @@ +#!/bin/sh + +. "${TEST_SCRIPTS_DIR}/unit.sh" + +define_test "CTDB_PARTIALLY_ONLINE_INTERFACES, all down" + +setup_ctdb + +ifaces=$(ctdb_get_interfaces) + +export CTDB_PARTIALLY_ONLINE_INTERFACES="yes" + +ethtool_interfaces_down $ifaces + +msg=$(for i in $ifaces ; do echo "ERROR: No link on the public network interface $i" ; done) + +required_result 1 "$msg" + +simple_test diff --git a/ctdb/tests/eventscripts/10.interface.monitor.011.sh b/ctdb/tests/eventscripts/10.interface.monitor.011.sh new file mode 100755 index 00000000000..21775d41ce5 --- /dev/null +++ b/ctdb/tests/eventscripts/10.interface.monitor.011.sh @@ -0,0 +1,19 @@ +#!/bin/sh + +. "${TEST_SCRIPTS_DIR}/unit.sh" + +define_test "CTDB_PARTIALLY_ONLINE_INTERFACES, 1 bond down" + +setup_ctdb + +iface=$(ctdb_get_1_interface) + +setup_bond $iface "None" + +export CTDB_PARTIALLY_ONLINE_INTERFACES="yes" + +ethtool_interfaces_down "$iface" + +ok "ERROR: No active slaves for bond device $iface" + +simple_test diff --git a/ctdb/tests/eventscripts/10.interface.monitor.012.sh b/ctdb/tests/eventscripts/10.interface.monitor.012.sh new file mode 100755 index 00000000000..dbe84b77296 --- /dev/null +++ b/ctdb/tests/eventscripts/10.interface.monitor.012.sh @@ -0,0 +1,23 @@ +#!/bin/sh + +. "${TEST_SCRIPTS_DIR}/unit.sh" + +define_test "CTDB_PARTIALLY_ONLINE_INTERFACES, 1 bond down" + +setup_ctdb + +ifaces=$(ctdb_get_interfaces) + +for i in $ifaces ; do + setup_bond $i "None" +done + +export CTDB_PARTIALLY_ONLINE_INTERFACES="yes" + +ethtool_interfaces_down $ifaces + +msg=$(for i in $ifaces ; do echo "ERROR: No active slaves for bond device $i" ; done) + +required_result 1 "$msg" + +simple_test diff --git a/ctdb/tests/eventscripts/10.interface.monitor.013.sh b/ctdb/tests/eventscripts/10.interface.monitor.013.sh new file mode 100755 index 00000000000..0fcdcd8d15b --- /dev/null +++ b/ctdb/tests/eventscripts/10.interface.monitor.013.sh @@ -0,0 +1,15 @@ +#!/bin/sh + +. "${TEST_SCRIPTS_DIR}/unit.sh" + +define_test "1 bond, active slaves, link down" + +setup_ctdb + +iface=$(ctdb_get_1_interface) + +setup_bond $iface "" "up" "down" + +required_result 1 "ERROR: No active slaves for 802.ad bond device $iface" + +simple_test diff --git a/ctdb/tests/eventscripts/10.interface.monitor.014.sh b/ctdb/tests/eventscripts/10.interface.monitor.014.sh new file mode 100755 index 00000000000..ab23d307c29 --- /dev/null +++ b/ctdb/tests/eventscripts/10.interface.monitor.014.sh @@ -0,0 +1,16 @@ +#!/bin/sh + +. "${TEST_SCRIPTS_DIR}/unit.sh" + +define_test "spurious addresses on interface, no action" + +setup_ctdb + +iface=$(ctdb_get_1_interface) + +ip addr add 192.168.253.253/24 dev $iface +ip addr add 192.168.254.254/24 dev $iface + +ok_null + +simple_test diff --git a/ctdb/tests/eventscripts/10.interface.monitor.015.sh b/ctdb/tests/eventscripts/10.interface.monitor.015.sh new file mode 100755 index 00000000000..ff54b69d9be --- /dev/null +++ b/ctdb/tests/eventscripts/10.interface.monitor.015.sh @@ -0,0 +1,22 @@ +#!/bin/sh + +. "${TEST_SCRIPTS_DIR}/unit.sh" + +define_test "spurious addresses on interface, delete them" + +setup_ctdb + +iface=$(ctdb_get_1_interface) + +ip addr add 192.168.253.253/24 dev $iface +ip addr add 192.168.254.254/24 dev $iface + +export CTDB_DELETE_UNEXPECTED_IPS="yes" + +ok <"$CTDB_PER_IP_ROUTING_CONF" <"$CTDB_PER_IP_ROUTING_CONF" <"$CTDB_PER_IP_ROUTING_CONF" <"$CTDB_PER_IP_ROUTING_CONF" <"$CTDB_PER_IP_ROUTING_CONF" + +ctdb_get_1_public_address | +{ + read dev ip bits + + net=$(ipv4_host_addr_to_net "$ip" "$bits") + gw="${net%.*}.1" # a dumb, calculated default + + ok_null + + simple_test_event "takeip" $dev $ip $bits + + ok <"$CTDB_PER_IP_ROUTING_CONF" + +# Now do a takeip for each IP on the "current" node +ctdb_get_my_public_addresses | +{ + policy_rules="" + policy_routes="" + while read dev ip bits ; do + + net=$(ipv4_host_addr_to_net "$ip" "$bits") + gw="${net%.*}.1" # a dumb, calculated default + + ok_null + + simple_test_event "takeip" $dev $ip $bits + + policy_rules="${policy_rules} +${CTDB_PER_IP_ROUTING_RULE_PREF}: from $ip lookup ctdb.$ip " + policy_routes="${policy_routes} +# ip route show table ctdb.$ip +$net dev $dev scope link +default via $gw dev $dev " + done + + ok <"$CTDB_PER_IP_ROUTING_CONF" <"$rpc_fail_limits_file" + +services="knfsd|mountd|rquotad|lockd|statd" + +echo "Doing rough check of file format..." + +! grep -v -E "^(${services}) " "$rpc_fail_limits_file" diff --git a/ctdb/tests/eventscripts/60.nfs.monitor.101.sh b/ctdb/tests/eventscripts/60.nfs.monitor.101.sh new file mode 100755 index 00000000000..1a689278106 --- /dev/null +++ b/ctdb/tests/eventscripts/60.nfs.monitor.101.sh @@ -0,0 +1,11 @@ +#!/bin/sh + +. "${TEST_SCRIPTS_DIR}/unit.sh" + +define_test "all services available" + +setup_nfs + +ok_null + +simple_test diff --git a/ctdb/tests/eventscripts/60.nfs.monitor.111.sh b/ctdb/tests/eventscripts/60.nfs.monitor.111.sh new file mode 100755 index 00000000000..414fcc8066b --- /dev/null +++ b/ctdb/tests/eventscripts/60.nfs.monitor.111.sh @@ -0,0 +1,12 @@ +#!/bin/sh + +. "${TEST_SCRIPTS_DIR}/unit.sh" + +define_test "knfsd down, 1 iteration" + +setup_nfs +rpc_services_down "nfs" + +ok_null + +simple_test diff --git a/ctdb/tests/eventscripts/60.nfs.monitor.112.sh b/ctdb/tests/eventscripts/60.nfs.monitor.112.sh new file mode 100755 index 00000000000..666a38aaaf6 --- /dev/null +++ b/ctdb/tests/eventscripts/60.nfs.monitor.112.sh @@ -0,0 +1,15 @@ +#!/bin/sh + +. "${TEST_SCRIPTS_DIR}/unit.sh" + +define_test "knfsd down, 6 iterations" + +# knfsd fails and attempts to restart it fail. + +setup_nfs +rpc_services_down "nfs" + +iterate_test 6 'ok_null' \ + 2 'rpc_set_service_failure_response "knfsd"' \ + 4 'rpc_set_service_failure_response "knfsd"' \ + 6 'rpc_set_service_failure_response "knfsd"' diff --git a/ctdb/tests/eventscripts/60.nfs.monitor.121.sh b/ctdb/tests/eventscripts/60.nfs.monitor.121.sh new file mode 100755 index 00000000000..6d27f60b27a --- /dev/null +++ b/ctdb/tests/eventscripts/60.nfs.monitor.121.sh @@ -0,0 +1,17 @@ +#!/bin/sh + +. "${TEST_SCRIPTS_DIR}/unit.sh" + +define_test "lockd down, 15 iterations" + +# This simulates an ongoing failure in the eventscript's automated +# attempts to restart the service. That is, the eventscript is unable +# to restart the service. + +setup_nfs +rpc_services_down "nlockmgr" + +#EVENTSCRIPTS_TESTS_TRACE="sh -x" +iterate_test 15 "ok_null" \ + 10 "rpc_set_service_failure_response 'lockd'" \ + 15 "rpc_set_service_failure_response 'lockd'" diff --git a/ctdb/tests/eventscripts/60.nfs.monitor.122.sh b/ctdb/tests/eventscripts/60.nfs.monitor.122.sh new file mode 100755 index 00000000000..fc5cea87c75 --- /dev/null +++ b/ctdb/tests/eventscripts/60.nfs.monitor.122.sh @@ -0,0 +1,19 @@ +#!/bin/sh + +. "${TEST_SCRIPTS_DIR}/unit.sh" + +define_test "lockd down, 15 iterations, back up after 10" + +# This simulates a success the eventscript's automated attempts to +# restart the service. + +setup_nfs +rpc_services_down "nlockmgr" + +# Iteration 10 should try to restart rpc.lockd. However, our test +# stub rpc.lockd does nothing, so we have to explicitly flag it as up. + +iterate_test 15 "ok_null" \ + 10 "rpc_set_service_failure_response 'lockd'" \ + 11 "rpc_services_up nlockmgr" + diff --git a/ctdb/tests/eventscripts/60.nfs.monitor.131.sh b/ctdb/tests/eventscripts/60.nfs.monitor.131.sh new file mode 100755 index 00000000000..1cf72a92844 --- /dev/null +++ b/ctdb/tests/eventscripts/60.nfs.monitor.131.sh @@ -0,0 +1,10 @@ +#!/bin/sh + +. "${TEST_SCRIPTS_DIR}/unit.sh" + +define_test "rquotad down, 5 iterations" + +setup_nfs +rpc_services_down "rquotad" + +iterate_test 5 'rpc_set_service_failure_response "rquotad"' diff --git a/ctdb/tests/eventscripts/60.nfs.monitor.132.sh b/ctdb/tests/eventscripts/60.nfs.monitor.132.sh new file mode 100755 index 00000000000..b8f3f2b0411 --- /dev/null +++ b/ctdb/tests/eventscripts/60.nfs.monitor.132.sh @@ -0,0 +1,15 @@ +#!/bin/sh + +. "${TEST_SCRIPTS_DIR}/unit.sh" + +define_test "rquotad down, 5 iterations, back up after 1" + +# rquotad fails once but then comes back of its own accord after 1 +# failure. + +setup_nfs +rpc_services_down "rquotad" + +iterate_test 5 'ok_null' \ + 1 'rpc_set_service_failure_response "rquotad"' \ + 2 'rpc_services_up "rquotad"' diff --git a/ctdb/tests/eventscripts/60.nfs.monitor.141.sh b/ctdb/tests/eventscripts/60.nfs.monitor.141.sh new file mode 100755 index 00000000000..c77b1a7b052 --- /dev/null +++ b/ctdb/tests/eventscripts/60.nfs.monitor.141.sh @@ -0,0 +1,15 @@ +#!/bin/sh + +. "${TEST_SCRIPTS_DIR}/unit.sh" + +define_test "statd down, 6 iterations" + +# statd fails and attempts to restart it fail. + +setup_nfs +rpc_services_down "status" + +iterate_test 6 'ok_null' \ + 2 'rpc_set_service_failure_response "statd"' \ + 4 'rpc_set_service_failure_response "statd"' \ + 6 'rpc_set_service_failure_response "statd"' diff --git a/ctdb/tests/eventscripts/60.nfs.monitor.142.sh b/ctdb/tests/eventscripts/60.nfs.monitor.142.sh new file mode 100755 index 00000000000..4373d8d6426 --- /dev/null +++ b/ctdb/tests/eventscripts/60.nfs.monitor.142.sh @@ -0,0 +1,14 @@ +#!/bin/sh + +. "${TEST_SCRIPTS_DIR}/unit.sh" + +define_test "statd down, 8 iterations, back up after 2" + +# statd fails and the first attempt to restart it succeeds. + +setup_nfs +rpc_services_down "status" + +iterate_test 8 'ok_null' \ + 2 'rpc_set_service_failure_response "statd"' \ + 3 'rpc_services_up "status"' diff --git a/ctdb/tests/eventscripts/60.nfs.monitor.151.sh b/ctdb/tests/eventscripts/60.nfs.monitor.151.sh new file mode 100755 index 00000000000..ea9aa7830ec --- /dev/null +++ b/ctdb/tests/eventscripts/60.nfs.monitor.151.sh @@ -0,0 +1,12 @@ +#!/bin/sh + +. "${TEST_SCRIPTS_DIR}/unit.sh" + +define_test "mountd down, 1 iteration" + +setup_nfs +rpc_services_down "mountd" + +ok_null + +simple_test diff --git a/ctdb/tests/eventscripts/60.nfs.monitor.152.sh b/ctdb/tests/eventscripts/60.nfs.monitor.152.sh new file mode 100755 index 00000000000..c4eb4194ae2 --- /dev/null +++ b/ctdb/tests/eventscripts/60.nfs.monitor.152.sh @@ -0,0 +1,18 @@ +#!/bin/sh + +. "${TEST_SCRIPTS_DIR}/unit.sh" + +define_test "mountd down, 10 iterations" + +# This simulates an ongoing failure in the eventscript's automated +# attempts to restart the service. That is, the eventscript is unable +# to restart the service. + +setup_nfs +rpc_services_down "mountd" + +iterate_test 10 "ok_null" \ + 5 "rpc_set_service_failure_response 'mountd'" \ + 10 "rpc_set_service_failure_response 'mountd'" + +#export FAKE_NETSTAT_TCP_ESTABLISHED="10.0.0.1:2049|10.254.254.1:12301 10.0.0.1:2049|10.254.254.1:12302 10.0.0.1:2049|10.254.254.1:12303 10.0.0.1:2049|10.254.254.2:12304 10.0.0.1:2049|10.254.254.2:12305" diff --git a/ctdb/tests/eventscripts/60.nfs.monitor.153.sh b/ctdb/tests/eventscripts/60.nfs.monitor.153.sh new file mode 100755 index 00000000000..cf33e39bbc8 --- /dev/null +++ b/ctdb/tests/eventscripts/60.nfs.monitor.153.sh @@ -0,0 +1,15 @@ +#!/bin/sh + +. "${TEST_SCRIPTS_DIR}/unit.sh" + +define_test "mountd down, 10 iterations, back up after 5" + +setup_nfs +rpc_services_down "mountd" + +# Iteration 5 should try to restart rpc.mountd. However, our test +# stub rpc.mountd does nothing, so we have to explicitly flag it as +# up. +iterate_test 10 "ok_null" \ + 5 "rpc_set_service_failure_response 'mountd'" \ + 6 "rpc_services_up mountd" diff --git a/ctdb/tests/eventscripts/60.nfs.monitor.161.sh b/ctdb/tests/eventscripts/60.nfs.monitor.161.sh new file mode 100755 index 00000000000..1e07c181c2e --- /dev/null +++ b/ctdb/tests/eventscripts/60.nfs.monitor.161.sh @@ -0,0 +1,13 @@ +#!/bin/sh + +. "${TEST_SCRIPTS_DIR}/unit.sh" + +define_test "2nd share missing" + +setup_nfs + +shares_missing "ERROR: nfs directory \"%s\" not available" 2 + +required_result 1 "$MISSING_SHARES_TEXT" + +simple_test diff --git a/ctdb/tests/eventscripts/60.nfs.monitor.162.sh b/ctdb/tests/eventscripts/60.nfs.monitor.162.sh new file mode 100755 index 00000000000..ccd4ca84ea1 --- /dev/null +++ b/ctdb/tests/eventscripts/60.nfs.monitor.162.sh @@ -0,0 +1,14 @@ +#!/bin/sh + +. "${TEST_SCRIPTS_DIR}/unit.sh" + +define_test "2nd share missing, skipping share checks" + +setup_nfs +export CTDB_NFS_SKIP_SHARE_CHECK="yes" + +shares_missing "ERROR: nfs directory \"%s\" not available" 2 + +ok_null + +simple_test diff --git a/ctdb/tests/eventscripts/60.nfs.multi.001.sh b/ctdb/tests/eventscripts/60.nfs.multi.001.sh new file mode 100755 index 00000000000..e578c56c326 --- /dev/null +++ b/ctdb/tests/eventscripts/60.nfs.multi.001.sh @@ -0,0 +1,21 @@ +#!/bin/sh + +. "${TEST_SCRIPTS_DIR}/unit.sh" + +define_test "takeip, ipreallocated -> reconfigure" + +setup_nfs + +public_address=$(ctdb_get_1_public_address) + +ok_null + +simple_test_event "takeip" $public_address + +ok < reconfigure" + +setup_nfs + +public_address=$(ctdb_get_1_public_address) + +ok_null + +simple_test_event "takeip" $public_address + +# This currently assumes that ctdb scriptstatus will always return a +# good status (when replaying). That should change and we will need +# to split this into 2 tests. +ok < reconfigure, replay error" + +setup_nfs + +public_address=$(ctdb_get_1_public_address) + +err="foo: bar error occurred" + +ok_null + +simple_test_event "takeip" $public_address + +ctdb_fake_scriptstatus 1 "ERROR" "$err" + +required_result 1 < reconfigure, replay timedout" + +setup_nfs + +public_address=$(ctdb_get_1_public_address) + +err="waiting, waiting..." + +ok_null + +simple_test_event "takeip" $public_address + +ctdb_fake_scriptstatus -62 "TIMEDOUT" "$err" + +required_result 1 < reconfigure, replay disabled" + +setup_nfs + +public_address=$(ctdb_get_1_public_address) + +err="" + +ok_null + +simple_test_event "takeip" $public_address + +ctdb_fake_scriptstatus -8 "DISABLED" "$err" + +ok <&2 ; exit 1 ; } - -# Augment PATH with relevant stubs/ directories. We do this by actually -# setting PATH, and also by setting $EVENTSCRIPTS_PATH and then -# prepending that to $PATH in rc.local to avoid the PATH reset in -# functions. - -EVENTSCRIPTS_PATH="" - -if [ -d "${EVENTSCRIPTS_TESTS_DIR}/stubs" ] ; then - EVENTSCRIPTS_PATH="${EVENTSCRIPTS_TESTS_DIR}/stubs" -fi - -export EVENTSCRIPTS_TESTCASE_DIR=$(dirname "$0") -if [ $(basename "$EVENTSCRIPTS_TESTCASE_DIR") = "eventscripts" ] ; then - # Just a test script, no testcase subdirectory. - EVENTSCRIPTS_TESTCASE_DIR="$EVENTSCRIPTS_TESTS_DIR" -else - if [ -d "${EVENTSCRIPTS_TESTCASE_DIR}/stubs" ] ; then - EVENTSCRIPTS_PATH="${EVENTSCRIPTS_TESTCASE_DIR}/stubs:${EVENTSCRIPTS_PATH}" - fi -fi - -export EVENTSCRIPTS_PATH - -PATH="${EVENTSCRIPTS_PATH}:${PATH}" - -if [ -d "${EVENTSCRIPTS_TESTCASE_DIR}/etc" ] ; then - CTDB_ETCDIR="${EVENTSCRIPTS_TESTCASE_DIR}/etc" -elif [ -d "${EVENTSCRIPTS_TESTS_DIR}/etc" ] ; then - CTDB_ETCDIR="${EVENTSCRIPTS_TESTS_DIR}/etc" -else - die "Unable to set \$CTDB_ETCDIR" -fi -export CTDB_ETCDIR - -if [ -d "${EVENTSCRIPTS_TESTCASE_DIR}/etc-ctdb" ] ; then - CTDB_BASE="${EVENTSCRIPTS_TESTCASE_DIR}/etc-ctdb" -elif [ -d "${EVENTSCRIPTS_TESTCASE_DIR}/etc/ctdb" ] ; then - CTDB_BASE="${EVENTSCRIPTS_TESTCASE_DIR}/etc/ctdb" -elif [ -d "${EVENTSCRIPTS_TESTS_DIR}/etc-ctdb" ] ; then - CTDB_BASE="${EVENTSCRIPTS_TESTS_DIR}/etc-ctdb" -else - die "Unable to set \$CTDB_BASE" -fi -export CTDB_BASE - -export EVENTSCRIPTS_TESTS_VAR_DIR="${EVENTSCRIPTS_TESTS_DIR}/var" -if [ "$EVENTSCRIPTS_TESTS_VAR_DIR" != "/var" ] ; then - rm -r "$EVENTSCRIPTS_TESTS_VAR_DIR" -fi -mkdir -p "$EVENTSCRIPTS_TESTS_VAR_DIR" -export CTDB_VARDIR="$EVENTSCRIPTS_TESTS_VAR_DIR/ctdb" - -###################################################################### - -if [ "$EVENTSCRIPT_TESTS_VERBOSE" = "yes" ] ; then - debug () { echo "$@" ; } -else - debug () { : ; } -fi - -eventscripts_tests_cleanup_hooks="" - -# This loses quoting! -eventscripts_test_add_cleanup () -{ - eventscripts_tests_cleanup_hooks="${eventscripts_tests_cleanup_hooks}${eventscripts_tests_cleanup_hooks:+ ; }$*" -} - -trap 'eval $eventscripts_tests_cleanup_hooks' 0 - - -###################################################################### - -# General setup fakery - -setup_generic () -{ - debug "Setting up shares (3 existing shares)" - # Create 3 fake shares/exports. - export FAKE_SHARES="" - for i in $(seq 1 3) ; do - _s="${EVENTSCRIPTS_TESTS_VAR_DIR}/shares/${i}_existing" - mkdir -p "$_s" - FAKE_SHARES="${FAKE_SHARES}${FAKE_SHARES:+ }${_s}" - done - - export FAKE_PROC_NET_BONDING="$EVENTSCRIPTS_TESTS_VAR_DIR/proc-net-bonding" - mkdir -p "$FAKE_PROC_NET_BONDING" - rm -f "$FAKE_PROC_NET_BONDING"/* - - export FAKE_ETHTOOL_LINK_DOWN="$EVENTSCRIPTS_TESTS_VAR_DIR/ethtool-link-down" - mkdir -p "$FAKE_ETHTOOL_LINK_DOWN" - rm -f "$FAKE_ETHTOOL_LINK_DOWN"/* - - # This can only have 2 levels. We don't want to resort to usings - # something dangerous like "rm -r" setup time. - export FAKE_IP_STATE="$EVENTSCRIPTS_TESTS_VAR_DIR/fake-ip-state" - mkdir -p "$FAKE_IP_STATE" - rm -f "$FAKE_IP_STATE"/*/* - rm -f "$FAKE_IP_STATE"/* 2>/dev/null || true - rmdir "$FAKE_IP_STATE"/* 2>/dev/null || true -} - -tcp_port_down () -{ - for _i ; do - debug "Marking TCP port \"${_i}\" as not listening" - FAKE_TCP_LISTEN=$(echo "$FAKE_TCP_LISTEN" | sed -r -e "s@[[:space:]]*[\.0-9]+:${_i}@@g") - done -} - -shares_missing () -{ - _fmt="$1" ; shift - - # Replace some shares with non-existent ones. - _t="" - _n=1 - _nl=" -" - export MISSING_SHARES_TEXT="" - for _i in $FAKE_SHARES ; do - if [ $_n = "$1" ] ; then - shift - _i="${_i%_existing}_missing" - debug "Replacing share $_n with missing share \"$_i\"" - rmdir "$_i" 2>/dev/null || true - MISSING_SHARES_TEXT="${MISSING_SHARES_TEXT}${MISSING_SHARES_TEXT:+${_nl}}"$(printf "$_fmt" "${_i}") - fi - _t="${_t}${_t:+ }${_i}" - _n=$(($_n + 1)) - done - FAKE_SHARES="$_t" -} - -# Setup some fake /proc/net/bonding files with just enough info for -# the eventscripts. - -# arg1 is interface name, arg2 is currently active slave (use "None" -# if none), arg3 is MII status ("up" or "down"). -setup_bond () -{ - _iface="$1" - _slave="${2:-${_iface}_sl_0}" - _mii_s="${3:-up}" - _mii_subs="${4:-${_mii_s:-up}}" - echo "Setting $_iface to be a bond with active slave $_slave and MII status $_mii_s" - cat >"${FAKE_PROC_NET_BONDING}/$_iface" <> 8)) - done - - echo "${_net}/${_maskbits}" -} - -###################################################################### - -# CTDB fakery - -# Evaluate an expression that probably calls functions or uses -# variables from the CTDB functions file. This is used for test -# initialisation. -eventscript_call () -{ - ( - . "$CTDB_BASE/functions" - "$@" - ) -} - -# Set output for ctdb command. Option 1st argument is return code. -ctdb_set_output () -{ - _out="$EVENTSCRIPTS_TESTS_VAR_DIR/ctdb.out" - cat >"$_out" - - _rc="$EVENTSCRIPTS_TESTS_VAR_DIR/ctdb.rc" - echo "${1:-0}" >"$_rc" - - eventscripts_test_add_cleanup "rm -f $_out $_rc" -} - -setup_ctdb () -{ - setup_generic - - export FAKE_CTDB_NUMNODES="${1:-3}" - echo "Setting up CTDB with ${FAKE_CTDB_NUMNODES} fake nodes" - - export FAKE_CTDB_PNN="${2:-0}" - echo "Setting up CTDB with PNN ${FAKE_CTDB_PNN}" - - if [ -n "$3" ] ; then - echo "Setting up CTDB_PUBLIC_ADDRESSES: $3" - export CTDB_PUBLIC_ADDRESSES=$(mktemp) - for _i in $3 ; do - _ip="${_i%@*}" - _ifaces="${_i#*@}" - echo "${_ip} ${_ifaces}" >>"$CTDB_PUBLIC_ADDRESSES" - done - eventscripts_test_add_cleanup "rm -f $CTDB_PUBLIC_ADDRESSES" - fi - - export FAKE_CTDB_STATE="$EVENTSCRIPTS_TESTS_VAR_DIR/fake-ctdb" - - export FAKE_CTDB_IFACES_DOWN="$FAKE_CTDB_STATE/ifaces-down" - mkdir -p "$FAKE_CTDB_IFACES_DOWN" - rm -f "$FAKE_CTDB_IFACES_DOWN"/* - - export FAKE_CTDB_SCRIPTSTATUS="$FAKE_CTDB_STATE/scriptstatus" - mkdir -p "$FAKE_CTDB_SCRIPTSTATUS" - rm -f "$FAKE_CTDB_SCRIPTSTATUS"/* -} - -ctdb_get_interfaces () -{ - # The echo/subshell forces all the output onto 1 line. - echo $(ctdb ifaces -Y | awk -F: 'FNR > 1 {print $2}') -} - -ctdb_get_1_interface () -{ - _t=$(ctdb_get_interfaces) - echo ${_t%% *} -} - -# Print all public addresses as: interface IP maskbits -# Each line is suitable for passing to takeip/releaseip -ctdb_get_all_public_addresses () -{ - _f="${CTDB_PUBLIC_ADDRESSES:-${CTDB_BASE}/public_addresses}" - while IFS="/$IFS" read _ip _maskbits _ifaces ; do - echo "$_ifaces $_ip $_maskbits" - done <"$_f" -} - -# Print public addresses on this node as: interface IP maskbits -# Each line is suitable for passing to takeip/releaseip -ctdb_get_my_public_addresses () -{ - ctdb ip -v -Y | { - read _x # skip header line - - while IFS=":" read _x _ip _x _iface _x ; do - [ -n "$_iface" ] || continue - while IFS="/$IFS" read _i _maskbits _x ; do - if [ "$_ip" = "$_i" ] ; then - echo $_iface $_ip $_maskbits - break - fi - done <"${CTDB_PUBLIC_ADDRESSES:-${CTDB_BASE}/public_addresses}" - done - } -} - -# Prints the 1st public address as: interface IP maskbits -# This is suitable for passing to takeip/releaseip -ctdb_get_1_public_address () -{ - ctdb_get_my_public_addresses | head -n 1 -} - -ctdb_not_implemented () -{ - export CTDB_NOT_IMPLEMENTED="$1" - ctdb_not_implemented="\ -DEBUG: ctdb: command \"$1\" not implemented in stub" -} - -ctdb_fake_scriptstatus () -{ - _code="$1" - _status="$2" - _err_out="$3" - - _d1=$(date '+%s.%N') - _d2=$(date '+%s.%N') - - echo "$_code $_status $_err_out" >"$FAKE_CTDB_SCRIPTSTATUS/$script" -} - -setup_ctdb_policy_routing () -{ - export CTDB_PER_IP_ROUTING_CONF="$CTDB_BASE/policy_routing" - export CTDB_PER_IP_ROUTING_RULE_PREF=100 - export CTDB_PER_IP_ROUTING_TABLE_ID_LOW=1000 - export CTDB_PER_IP_ROUTING_TABLE_ID_HIGH=2000 - - # Tests need to create and populate this file - rm -f "$CTDB_PER_IP_ROUTING_CONF" -} - -###################################################################### - -# Samba fakery - -setup_samba () -{ - setup_ctdb - - if [ "$1" != "down" ] ; then - - debug "Marking Samba services as up, listening and managed by CTDB" - # Get into known state. - for i in "samba" "winbind" ; do - eventscript_call ctdb_service_managed "$i" - done - # All possible service names for all known distros. - for i in "smb" "nmb" "winbind" "samba" ; do - service "$i" force-started - done - - export CTDB_SAMBA_SKIP_SHARE_CHECK="no" - export CTDB_MANAGED_SERVICES="foo samba winbind bar" - - export FAKE_TCP_LISTEN="0.0.0.0:445 0.0.0.0:139" - export FAKE_WBINFO_FAIL="no" - - # Some things in 50.samba are backgrounded and waited for. If - # we don't sleep at all then timeouts can happen. This avoids - # that... :-) - export FAKE_SLEEP_FORCE=0.1 - else - debug "Marking Samba services as down, not listening and not managed by CTDB" - # Get into known state. - for i in "samba" "winbind" ; do - eventscript_call ctdb_service_unmanaged "$i" - done - # All possible service names for all known distros. - for i in "smb" "nmb" "winbind" "samba" ; do - service "$i" force-stopped - done - - export CTDB_SAMBA_SKIP_SHARE_CHECK="no" - export CTDB_MANAGED_SERVICES="foo bar" - unset CTDB_MANAGES_SAMBA - unset CTDB_MANAGES_WINBIND - - export FAKE_TCP_LISTEN="" - export FAKE_WBINFO_FAIL="yes" - fi - - # This is ugly but if this file isn't removed before each test - # then configuration changes between tests don't stick. - rm -f "$CTDB_VARDIR/state/samba/smb.conf.cache" -} - -wbinfo_down () -{ - debug "Making wbinfo commands fail" - FAKE_WBINFO_FAIL="yes" -} - -###################################################################### - -# NFS fakery - -setup_nfs () -{ - setup_ctdb - - export FAKE_RPCINFO_SERVICES="" - - export CTDB_NFS_SKIP_SHARE_CHECK="no" - export CTDB_NFS_SKIP_KNFSD_ALIVE_CHECK="no" - - # Reset the failcounts for nfs services. - eventscript_call eval rm -f '$ctdb_fail_dir/nfs_*' - - rpc_fail_limits_file="${EVENTSCRIPTS_TESTS_VAR_DIR}/rpc_fail_limits" - - # Force this file to exist so tests can be individually run. - if [ ! -f "$rpc_fail_limits_file" ] ; then - # This is gross... but is needed to fake through the nfs monitor event. - eventscript_call ctdb_service_managed "nfs" - service "nfs" force-started # might not be enough - CTDB_RC_LOCAL="$CTDB_BASE/rc.local.nfs.monitor.get-limits" \ - CTDB_MANAGES_NFS="yes" \ - "${CTDB_BASE}/events.d/60.nfs" "monitor" >"$rpc_fail_limits_file" - fi - - if [ "$1" != "down" ] ; then - debug "Setting up NFS environment: all RPC services up, NFS managed by CTDB" - - eventscript_call ctdb_service_managed "nfs" - service "nfs" force-started # might not be enough - - export CTDB_MANAGED_SERVICES="foo nfs bar" - - rpc_services_up "nfs" "mountd" "rquotad" "nlockmgr" "status" - else - debug "Setting up NFS environment: all RPC services down, NFS not managed by CTDB" - - eventscript_call ctdb_service_unmanaged "nfs" - service "nfs" force-stopped # might not be enough - eventscript_call startstop_nfs stop - - export CTDB_MANAGED_SERVICES="foo bar" - unset CTDB_MANAGES_NFS - fi -} - -rpc_services_down () -{ - for _i ; do - debug "Marking RPC service \"${_i}\" as unavailable" - FAKE_RPCINFO_SERVICES=$(echo "$FAKE_RPCINFO_SERVICES" | sed -r -e "s@[[:space:]]*${_i}:[0-9]+:[0-9]+@@g") - done -} - -rpc_services_up () -{ - for _i ; do - debug "Marking RPC service \"${_i}\" as available" - case "$_i" in - nfs) _t="2:3" ;; - mountd) _t="1:3" ;; - rquotad) _t="1:2" ;; - nlockmgr) _t="3:4" ;; - status) _t="1:1" ;; - *) die "Internal error - unsupported RPC service \"${_i}\"" ;; - esac - - FAKE_RPCINFO_SERVICES="${FAKE_RPCINFO_SERVICES}${FAKE_RPCINFO_SERVICES:+ }${_i}:${_t}" - done -} - -# Set the required result for a particular RPC program having failed -# for a certain number of iterations. This is probably still a work -# in progress. Note that we could hook aggressively -# nfs_check_rpc_service() to try to implement this but we're better -# off testing nfs_check_rpc_service() using independent code... even -# if it is incomplete and hacky. So, if the 60.nfs eventscript -# changes and the tests start to fail then it may be due to this -# function being incomplete. -rpc_set_service_failure_response () -{ - _progname="$1" - # The number of failures defaults to the iteration number. This - # will be true when we fail from the 1st iteration... but we need - # the flexibility to set the number of failures. - _numfails="${2:-${iteration}}" - - _etc="$CTDB_ETCDIR" # shortcut for readability - for _c in "$_etc/sysconfig/nfs" "$_etc/default/nfs" "$_etc/ctdb/sysconfig/nfs" ; do - if [ -r "$_c" ] ; then - . "$_c" - break - fi - done - - # A handy newline. :-) - _nl=" -" - - # Default - ok_null - - _ts=$(sed -n -e "s@^${_progname} @@p" "$rpc_fail_limits_file") - - while [ -n "$_ts" ] ; do - # Get the triple: operator, fail limit and actions. - _op="${_ts%% *}" ; _ts="${_ts#* }" - _li="${_ts%% *}" ; _ts="${_ts#* }" - # We've lost some of the quoting but we can simulate - # because we know an operator is always the first in a - # triple. - _actions="" - while [ -n "$_ts" ] ; do - # If this is an operator then we've got all of the - # actions. - case "$_ts" in - -*) break ;; - esac - - _actions="${_actions}${_actions:+ }${_ts%% *}" - # Special case for end of list. - if [ "$_ts" != "${_ts#* }" ] ; then - _ts="${_ts#* }" - else - _ts="" - fi - done - - if [ "$_numfails" "$_op" "$_li" ] ; then - _out="" - _rc=0 - for _action in $_actions ; do - case "$_action" in - verbose) - _ver=1 - _pn="$_progname" - case "$_progname" in - knfsd) _ver=3 ; _pn="nfs" ;; - lockd) _ver=4 ; _pn="nlockmgr" ;; - statd) _pn="status" ;; - esac - _out="\ -ERROR: $_pn failed RPC check: -rpcinfo: RPC: Program not registered -program $_pn version $_ver is not available" - ;; - restart|restart:*) - _opts="" - _p="rpc.${_progname}" - case "$_progname" in - statd) - _opts="${STATD_HOSTNAME:+ -n }${STATD_HOSTNAME}" - ;; - esac - case "${_progname}${_action#restart}" in - knfsd) - _t="\ -Trying to restart NFS service -Starting nfslock: OK -Starting nfs: OK" - ;; - knfsd:bs) - _t="Trying to restart NFS service" - ;; - lockd) - _t="\ -Trying to restart lock manager service -Stopping nfslock: OK -Starting nfslock: OK" - ;; - lockd:*) - _t="Trying to restart lock manager service" - ;; - *) - _t="Trying to restart $_progname [${_p}${_opts}]" - esac - _out="${_out}${_out:+${_nl}}${_t}" - ;; - unhealthy) - _rc=1 - esac - done - required_result $_rc "$_out" - return - fi - done -} - -###################################################################### - -# VSFTPD fakery - -setup_vsftpd () -{ - if [ "$1" != "down" ] ; then - die "setup_vsftpd up not implemented!!!" - else - debug "Setting up VSFTPD environment: service down, not managed by CTDB" - - eventscript_call ctdb_service_unmanaged vsftpd - service vsftpd force-stopped - - export CTDB_MANAGED_SERVICES="foo" - unset CTDB_MANAGES_VSFTPD - fi -} - -###################################################################### - -# HTTPD fakery - -setup_httpd () -{ - if [ "$1" != "down" ] ; then - die "setup_httpd up not implemented!!!" - else - debug "Setting up HTTPD environment: service down, not managed by CTDB" - - for i in "apache2" "httpd" ; do - eventscript_call ctdb_service_unmanaged "$i" - service "$i" force-stopped - done - - export CTDB_MANAGED_SERVICES="foo" - unset CTDB_MANAGES_HTTPD - fi -} - -###################################################################### - -# Result and test functions - -# Set some globals and print the summary. -define_test () -{ - desc="$1" - - _f="$0" - _f="${_f#./}" # strip leading ./ - _f="${_f#simple/}" # strip leading simple/ - _f="${_f#multievent/}" # strip leading multievent/ - _f="${_f%%/*}" # if subdir, strip off file - _f="${_f%.sh}" # strip off .sh suffix if any - - # Remaining format should be NN.service.event.NNN or NN.service.NNN: - _num="${_f##*.}" - _f="${_f%.*}" - case "$_f" in - *.*.*) - script="${_f%.*}" - event="${_f##*.}" - ;; - *.*) - script="$_f" - unset event - ;; - *) - die "Internal error - unknown testcase filename format" - esac - - printf "%-17s %-10s %-4s - %s\n\n" "$script" "$event" "$_num" "$desc" -} - -# Set the required result for a test. -# - Argument 1 is exit code. -# - Argument 2, if present is the required test output but "--" -# indicates empty output. -# If argument 2 is not present or null then read required test output -# from stdin. -required_result () -{ - required_rc="${1:-0}" - if [ -n "$2" ] ; then - if [ "$2" = "--" ] ; then - required_output="" - else - required_output="$2" - fi - else - if ! tty -s ; then - required_output=$(cat) - else - required_output="" - fi - fi -} - -ok () -{ - required_result 0 "$@" -} - -ok_null () -{ - ok -- -} - -result_print () -{ - _passed="$1" - _out="$2" - _rc="$3" - _iteration="$4" - - if [ "$EVENTSCRIPT_TESTS_VERBOSE" = "yes" ] || ! $_passed ; then - if [ -n "$_iteration" ] ; then - cat <"$_outr" - - _outf=$(mktemp) - echo "$_out" >"$_outf" - - cat <&1) - - result_check -} - -simple_test_event () -{ - # If something has previously failed then don't continue. - : ${_passed:=true} - $_passed || return 1 - - event="$1" ; shift - echo "##################################################" - simple_test "$@" -} - -simple_test_command () -{ - # If something has previously failed then don't continue. - : ${_passed:=true} - $_passed || return 1 - - echo "##################################################" - echo "Running command \"$*\"" - _out=$("$@" 2>&1) - - result_check -} - -# Run an eventscript iteratively. -# - 1st argument is the number of iterations. -# - 2nd argument is something to eval to do setup for every iteration. -# The easiest thing to do here is to define a function and pass it -# here. -# - Subsequent arguments come in pairs: an iteration number and -# something to eval for that iteration. Each time an iteration -# number is matched the associated argument is given to eval after -# the default setup is done. The iteration numbers need to be given -# in ascending order. -# -# Some optional args can be given *before* these, surrounded by extra -# "--" args. These args are passed to the eventscript. Quoting is -# lost. -# -# One use of the 2nd and further arguments is to call -# required_result() to change what is expected of a particular -# iteration. -iterate_test () -{ - [ -n "$event" ] || die 'simple_test: $event not set' - - args="" - if [ "$1" = "--" ] ; then - shift - while [ "$1" != "--" ] ; do - args="${args}${args:+ }$1" - shift - done - shift - fi - - _repeats="$1" - _setup_default="$2" - shift 2 - - echo "Running $_repeats iterations of \"$script $event\" $args" - - _result=true - - for iteration in $(seq 1 $_repeats) ; do - # This is inefficient because the iteration-specific setup - # might completely replace the default one. However, running - # the default is good because it allows you to revert to a - # particular result without needing to specify it explicitly. - eval $_setup_default - if [ $iteration = "$1" ] ; then - eval $2 - shift 2 - fi - - _out=$($EVENTSCRIPTS_TESTS_TRACE "${CTDB_BASE}/events.d/$script" "$event" $args 2>&1) - _rc=$? - - if [ -n "$OUT_FILTER" ] ; then - _fout=$(echo "$_out" | eval sed -r $OUT_FILTER) - else - _fout="$_out" - fi - - if [ "$_fout" = "$required_output" -a $_rc = $required_rc ] ; then - _passed=true - else - _passed=false - _result=false - fi - - result_print "$_passed" "$_out" "$_rc" "$iteration" - done - - result_footer "$_result" -} diff --git a/ctdb/tests/eventscripts/multievent/10.interface.001.sh b/ctdb/tests/eventscripts/multievent/10.interface.001.sh deleted file mode 100755 index 5ef254c536f..00000000000 --- a/ctdb/tests/eventscripts/multievent/10.interface.001.sh +++ /dev/null @@ -1,14 +0,0 @@ -#!/bin/sh - -. "${EVENTSCRIPTS_TESTS_DIR}/common.sh" - -define_test "takeip, removeip" - -setup_ctdb - -public_address=$(ctdb_get_1_public_address) - -ok_null - -simple_test_event "takeip" $public_address -simple_test_event "releaseip" $public_address diff --git a/ctdb/tests/eventscripts/multievent/13.per_ip_routing.001.sh b/ctdb/tests/eventscripts/multievent/13.per_ip_routing.001.sh deleted file mode 100755 index 0bcf8e3055c..00000000000 --- a/ctdb/tests/eventscripts/multievent/13.per_ip_routing.001.sh +++ /dev/null @@ -1,16 +0,0 @@ -#!/bin/sh - -. "${EVENTSCRIPTS_TESTS_DIR}/common.sh" - -define_test "not configured" - -setup_ctdb - -ok <"$CTDB_PER_IP_ROUTING_CONF" <"$CTDB_PER_IP_ROUTING_CONF" <"$CTDB_PER_IP_ROUTING_CONF" <"$CTDB_PER_IP_ROUTING_CONF" <"$CTDB_PER_IP_ROUTING_CONF" - -ctdb_get_1_public_address | -{ - read dev ip bits - - net=$(ipv4_host_addr_to_net "$ip" "$bits") - gw="${net%.*}.1" # a dumb, calculated default - - ok_null - - simple_test_event "takeip" $dev $ip $bits - - ok <"$CTDB_PER_IP_ROUTING_CONF" - -# Now do a takeip for each IP on the "current" node -ctdb_get_my_public_addresses | -{ - policy_rules="" - policy_routes="" - while read dev ip bits ; do - - net=$(ipv4_host_addr_to_net "$ip" "$bits") - gw="${net%.*}.1" # a dumb, calculated default - - ok_null - - simple_test_event "takeip" $dev $ip $bits - - policy_rules="${policy_rules} -${CTDB_PER_IP_ROUTING_RULE_PREF}: from $ip lookup ctdb.$ip " - policy_routes="${policy_routes} -# ip route show table ctdb.$ip -$net dev $dev scope link -default via $gw dev $dev " - done - - ok <"$CTDB_PER_IP_ROUTING_CONF" < reconfigure" - -setup_nfs - -public_address=$(ctdb_get_1_public_address) - -ok_null - -simple_test_event "takeip" $public_address - -ok < reconfigure" - -setup_nfs - -public_address=$(ctdb_get_1_public_address) - -ok_null - -simple_test_event "takeip" $public_address - -# This currently assumes that ctdb scriptstatus will always return a -# good status (when replaying). That should change and we will need -# to split this into 2 tests. -ok < reconfigure, replay error" - -setup_nfs - -public_address=$(ctdb_get_1_public_address) - -err="foo: bar error occurred" - -ok_null - -simple_test_event "takeip" $public_address - -ctdb_fake_scriptstatus 1 "ERROR" "$err" - -required_result 1 < reconfigure, replay timedout" - -setup_nfs - -public_address=$(ctdb_get_1_public_address) - -err="waiting, waiting..." - -ok_null - -simple_test_event "takeip" $public_address - -ctdb_fake_scriptstatus -62 "TIMEDOUT" "$err" - -required_result 1 < reconfigure, replay disabled" - -setup_nfs - -public_address=$(ctdb_get_1_public_address) - -err="" - -ok_null - -simple_test_event "takeip" $public_address - -ctdb_fake_scriptstatus -8 "DISABLED" "$err" - -ok </dev/null || true + rmdir "$FAKE_IP_STATE"/* 2>/dev/null || true +} + +tcp_port_down () +{ + for _i ; do + debug "Marking TCP port \"${_i}\" as not listening" + FAKE_TCP_LISTEN=$(echo "$FAKE_TCP_LISTEN" | sed -r -e "s@[[:space:]]*[\.0-9]+:${_i}@@g") + done +} + +shares_missing () +{ + _fmt="$1" ; shift + + # Replace some shares with non-existent ones. + _t="" + _n=1 + _nl=" +" + export MISSING_SHARES_TEXT="" + for _i in $FAKE_SHARES ; do + if [ $_n = "$1" ] ; then + shift + _i="${_i%_existing}_missing" + debug "Replacing share $_n with missing share \"$_i\"" + rmdir "$_i" 2>/dev/null || true + MISSING_SHARES_TEXT="${MISSING_SHARES_TEXT}${MISSING_SHARES_TEXT:+${_nl}}"$(printf "$_fmt" "${_i}") + fi + _t="${_t}${_t:+ }${_i}" + _n=$(($_n + 1)) + done + FAKE_SHARES="$_t" +} + +# Setup some fake /proc/net/bonding files with just enough info for +# the eventscripts. + +# arg1 is interface name, arg2 is currently active slave (use "None" +# if none), arg3 is MII status ("up" or "down"). +setup_bond () +{ + _iface="$1" + _slave="${2:-${_iface}_sl_0}" + _mii_s="${3:-up}" + _mii_subs="${4:-${_mii_s:-up}}" + echo "Setting $_iface to be a bond with active slave $_slave and MII status $_mii_s" + cat >"${FAKE_PROC_NET_BONDING}/$_iface" <> 8)) + done + + echo "${_net}/${_maskbits}" +} + +###################################################################### + +# CTDB fakery + +# Evaluate an expression that probably calls functions or uses +# variables from the CTDB functions file. This is used for test +# initialisation. +eventscript_call () +{ + ( + . "$CTDB_BASE/functions" + "$@" + ) +} + +# Set output for ctdb command. Option 1st argument is return code. +ctdb_set_output () +{ + _out="$EVENTSCRIPTS_TESTS_VAR_DIR/ctdb.out" + cat >"$_out" + + _rc="$EVENTSCRIPTS_TESTS_VAR_DIR/ctdb.rc" + echo "${1:-0}" >"$_rc" + + eventscripts_test_add_cleanup "rm -f $_out $_rc" +} + +setup_ctdb () +{ + setup_generic + + export FAKE_CTDB_NUMNODES="${1:-3}" + echo "Setting up CTDB with ${FAKE_CTDB_NUMNODES} fake nodes" + + export FAKE_CTDB_PNN="${2:-0}" + echo "Setting up CTDB with PNN ${FAKE_CTDB_PNN}" + + if [ -n "$3" ] ; then + echo "Setting up CTDB_PUBLIC_ADDRESSES: $3" + export CTDB_PUBLIC_ADDRESSES=$(mktemp) + for _i in $3 ; do + _ip="${_i%@*}" + _ifaces="${_i#*@}" + echo "${_ip} ${_ifaces}" >>"$CTDB_PUBLIC_ADDRESSES" + done + eventscripts_test_add_cleanup "rm -f $CTDB_PUBLIC_ADDRESSES" + fi + + export FAKE_CTDB_STATE="$EVENTSCRIPTS_TESTS_VAR_DIR/fake-ctdb" + + export FAKE_CTDB_IFACES_DOWN="$FAKE_CTDB_STATE/ifaces-down" + mkdir -p "$FAKE_CTDB_IFACES_DOWN" + rm -f "$FAKE_CTDB_IFACES_DOWN"/* + + export FAKE_CTDB_SCRIPTSTATUS="$FAKE_CTDB_STATE/scriptstatus" + mkdir -p "$FAKE_CTDB_SCRIPTSTATUS" + rm -f "$FAKE_CTDB_SCRIPTSTATUS"/* +} + +ctdb_get_interfaces () +{ + # The echo/subshell forces all the output onto 1 line. + echo $(ctdb ifaces -Y | awk -F: 'FNR > 1 {print $2}') +} + +ctdb_get_1_interface () +{ + _t=$(ctdb_get_interfaces) + echo ${_t%% *} +} + +# Print all public addresses as: interface IP maskbits +# Each line is suitable for passing to takeip/releaseip +ctdb_get_all_public_addresses () +{ + _f="${CTDB_PUBLIC_ADDRESSES:-${CTDB_BASE}/public_addresses}" + while IFS="/$IFS" read _ip _maskbits _ifaces ; do + echo "$_ifaces $_ip $_maskbits" + done <"$_f" +} + +# Print public addresses on this node as: interface IP maskbits +# Each line is suitable for passing to takeip/releaseip +ctdb_get_my_public_addresses () +{ + ctdb ip -v -Y | { + read _x # skip header line + + while IFS=":" read _x _ip _x _iface _x ; do + [ -n "$_iface" ] || continue + while IFS="/$IFS" read _i _maskbits _x ; do + if [ "$_ip" = "$_i" ] ; then + echo $_iface $_ip $_maskbits + break + fi + done <"${CTDB_PUBLIC_ADDRESSES:-${CTDB_BASE}/public_addresses}" + done + } +} + +# Prints the 1st public address as: interface IP maskbits +# This is suitable for passing to takeip/releaseip +ctdb_get_1_public_address () +{ + ctdb_get_my_public_addresses | head -n 1 +} + +ctdb_not_implemented () +{ + export CTDB_NOT_IMPLEMENTED="$1" + ctdb_not_implemented="\ +DEBUG: ctdb: command \"$1\" not implemented in stub" +} + +ctdb_fake_scriptstatus () +{ + _code="$1" + _status="$2" + _err_out="$3" + + _d1=$(date '+%s.%N') + _d2=$(date '+%s.%N') + + echo "$_code $_status $_err_out" >"$FAKE_CTDB_SCRIPTSTATUS/$script" +} + +setup_ctdb_policy_routing () +{ + export CTDB_PER_IP_ROUTING_CONF="$CTDB_BASE/policy_routing" + export CTDB_PER_IP_ROUTING_RULE_PREF=100 + export CTDB_PER_IP_ROUTING_TABLE_ID_LOW=1000 + export CTDB_PER_IP_ROUTING_TABLE_ID_HIGH=2000 + + # Tests need to create and populate this file + rm -f "$CTDB_PER_IP_ROUTING_CONF" +} + +###################################################################### + +# Samba fakery + +setup_samba () +{ + setup_ctdb + + if [ "$1" != "down" ] ; then + + debug "Marking Samba services as up, listening and managed by CTDB" + # Get into known state. + for i in "samba" "winbind" ; do + eventscript_call ctdb_service_managed "$i" + done + # All possible service names for all known distros. + for i in "smb" "nmb" "winbind" "samba" ; do + service "$i" force-started + done + + export CTDB_SAMBA_SKIP_SHARE_CHECK="no" + export CTDB_MANAGED_SERVICES="foo samba winbind bar" + + export FAKE_TCP_LISTEN="0.0.0.0:445 0.0.0.0:139" + export FAKE_WBINFO_FAIL="no" + + # Some things in 50.samba are backgrounded and waited for. If + # we don't sleep at all then timeouts can happen. This avoids + # that... :-) + export FAKE_SLEEP_FORCE=0.1 + else + debug "Marking Samba services as down, not listening and not managed by CTDB" + # Get into known state. + for i in "samba" "winbind" ; do + eventscript_call ctdb_service_unmanaged "$i" + done + # All possible service names for all known distros. + for i in "smb" "nmb" "winbind" "samba" ; do + service "$i" force-stopped + done + + export CTDB_SAMBA_SKIP_SHARE_CHECK="no" + export CTDB_MANAGED_SERVICES="foo bar" + unset CTDB_MANAGES_SAMBA + unset CTDB_MANAGES_WINBIND + + export FAKE_TCP_LISTEN="" + export FAKE_WBINFO_FAIL="yes" + fi + + # This is ugly but if this file isn't removed before each test + # then configuration changes between tests don't stick. + rm -f "$CTDB_VARDIR/state/samba/smb.conf.cache" +} + +wbinfo_down () +{ + debug "Making wbinfo commands fail" + FAKE_WBINFO_FAIL="yes" +} + +###################################################################### + +# NFS fakery + +setup_nfs () +{ + setup_ctdb + + export FAKE_RPCINFO_SERVICES="" + + export CTDB_NFS_SKIP_SHARE_CHECK="no" + export CTDB_NFS_SKIP_KNFSD_ALIVE_CHECK="no" + + # Reset the failcounts for nfs services. + eventscript_call eval rm -f '$ctdb_fail_dir/nfs_*' + + rpc_fail_limits_file="${EVENTSCRIPTS_TESTS_VAR_DIR}/rpc_fail_limits" + + # Force this file to exist so tests can be individually run. + if [ ! -f "$rpc_fail_limits_file" ] ; then + # This is gross... but is needed to fake through the nfs monitor event. + eventscript_call ctdb_service_managed "nfs" + service "nfs" force-started # might not be enough + CTDB_RC_LOCAL="$CTDB_BASE/rc.local.nfs.monitor.get-limits" \ + CTDB_MANAGES_NFS="yes" \ + "${CTDB_BASE}/events.d/60.nfs" "monitor" >"$rpc_fail_limits_file" + fi + + if [ "$1" != "down" ] ; then + debug "Setting up NFS environment: all RPC services up, NFS managed by CTDB" + + eventscript_call ctdb_service_managed "nfs" + service "nfs" force-started # might not be enough + + export CTDB_MANAGED_SERVICES="foo nfs bar" + + rpc_services_up "nfs" "mountd" "rquotad" "nlockmgr" "status" + else + debug "Setting up NFS environment: all RPC services down, NFS not managed by CTDB" + + eventscript_call ctdb_service_unmanaged "nfs" + service "nfs" force-stopped # might not be enough + eventscript_call startstop_nfs stop + + export CTDB_MANAGED_SERVICES="foo bar" + unset CTDB_MANAGES_NFS + fi +} + +rpc_services_down () +{ + for _i ; do + debug "Marking RPC service \"${_i}\" as unavailable" + FAKE_RPCINFO_SERVICES=$(echo "$FAKE_RPCINFO_SERVICES" | sed -r -e "s@[[:space:]]*${_i}:[0-9]+:[0-9]+@@g") + done +} + +rpc_services_up () +{ + for _i ; do + debug "Marking RPC service \"${_i}\" as available" + case "$_i" in + nfs) _t="2:3" ;; + mountd) _t="1:3" ;; + rquotad) _t="1:2" ;; + nlockmgr) _t="3:4" ;; + status) _t="1:1" ;; + *) die "Internal error - unsupported RPC service \"${_i}\"" ;; + esac + + FAKE_RPCINFO_SERVICES="${FAKE_RPCINFO_SERVICES}${FAKE_RPCINFO_SERVICES:+ }${_i}:${_t}" + done +} + +# Set the required result for a particular RPC program having failed +# for a certain number of iterations. This is probably still a work +# in progress. Note that we could hook aggressively +# nfs_check_rpc_service() to try to implement this but we're better +# off testing nfs_check_rpc_service() using independent code... even +# if it is incomplete and hacky. So, if the 60.nfs eventscript +# changes and the tests start to fail then it may be due to this +# function being incomplete. +rpc_set_service_failure_response () +{ + _progname="$1" + # The number of failures defaults to the iteration number. This + # will be true when we fail from the 1st iteration... but we need + # the flexibility to set the number of failures. + _numfails="${2:-${iteration}}" + + _etc="$CTDB_ETCDIR" # shortcut for readability + for _c in "$_etc/sysconfig/nfs" "$_etc/default/nfs" "$_etc/ctdb/sysconfig/nfs" ; do + if [ -r "$_c" ] ; then + . "$_c" + break + fi + done + + # A handy newline. :-) + _nl=" +" + + # Default + ok_null + + _ts=$(sed -n -e "s@^${_progname} @@p" "$rpc_fail_limits_file") + + while [ -n "$_ts" ] ; do + # Get the triple: operator, fail limit and actions. + _op="${_ts%% *}" ; _ts="${_ts#* }" + _li="${_ts%% *}" ; _ts="${_ts#* }" + # We've lost some of the quoting but we can simulate + # because we know an operator is always the first in a + # triple. + _actions="" + while [ -n "$_ts" ] ; do + # If this is an operator then we've got all of the + # actions. + case "$_ts" in + -*) break ;; + esac + + _actions="${_actions}${_actions:+ }${_ts%% *}" + # Special case for end of list. + if [ "$_ts" != "${_ts#* }" ] ; then + _ts="${_ts#* }" + else + _ts="" + fi + done + + if [ "$_numfails" "$_op" "$_li" ] ; then + _out="" + _rc=0 + for _action in $_actions ; do + case "$_action" in + verbose) + _ver=1 + _pn="$_progname" + case "$_progname" in + knfsd) _ver=3 ; _pn="nfs" ;; + lockd) _ver=4 ; _pn="nlockmgr" ;; + statd) _pn="status" ;; + esac + _out="\ +ERROR: $_pn failed RPC check: +rpcinfo: RPC: Program not registered +program $_pn version $_ver is not available" + ;; + restart|restart:*) + _opts="" + _p="rpc.${_progname}" + case "$_progname" in + statd) + _opts="${STATD_HOSTNAME:+ -n }${STATD_HOSTNAME}" + ;; + esac + case "${_progname}${_action#restart}" in + knfsd) + _t="\ +Trying to restart NFS service +Starting nfslock: OK +Starting nfs: OK" + ;; + knfsd:bs) + _t="Trying to restart NFS service" + ;; + lockd) + _t="\ +Trying to restart lock manager service +Stopping nfslock: OK +Starting nfslock: OK" + ;; + lockd:*) + _t="Trying to restart lock manager service" + ;; + *) + _t="Trying to restart $_progname [${_p}${_opts}]" + esac + _out="${_out}${_out:+${_nl}}${_t}" + ;; + unhealthy) + _rc=1 + esac + done + required_result $_rc "$_out" + return + fi + done +} + +###################################################################### + +# VSFTPD fakery + +setup_vsftpd () +{ + if [ "$1" != "down" ] ; then + die "setup_vsftpd up not implemented!!!" + else + debug "Setting up VSFTPD environment: service down, not managed by CTDB" + + eventscript_call ctdb_service_unmanaged vsftpd + service vsftpd force-stopped + + export CTDB_MANAGED_SERVICES="foo" + unset CTDB_MANAGES_VSFTPD + fi +} + +###################################################################### + +# HTTPD fakery + +setup_httpd () +{ + if [ "$1" != "down" ] ; then + die "setup_httpd up not implemented!!!" + else + debug "Setting up HTTPD environment: service down, not managed by CTDB" + + for i in "apache2" "httpd" ; do + eventscript_call ctdb_service_unmanaged "$i" + service "$i" force-stopped + done + + export CTDB_MANAGED_SERVICES="foo" + unset CTDB_MANAGES_HTTPD + fi +} + +###################################################################### + +# Result and test functions + +# Set some globals and print the summary. +define_test () +{ + desc="$1" + + _f=$(basename "$0" ".sh") + + # Remaining format should be NN.service.event.NNN or NN.service.NNN: + _num="${_f##*.}" + _f="${_f%.*}" + case "$_f" in + *.*.*) + script="${_f%.*}" + event="${_f##*.}" + ;; + *.*) + script="$_f" + unset event + ;; + *) + die "Internal error - unknown testcase filename format" + esac + + printf "%-17s %-10s %-4s - %s\n\n" "$script" "$event" "$_num" "$desc" +} + +# Set the required result for a test. +# - Argument 1 is exit code. +# - Argument 2, if present is the required test output but "--" +# indicates empty output. +# If argument 2 is not present or null then read required test output +# from stdin. +required_result () +{ + required_rc="${1:-0}" + if [ -n "$2" ] ; then + if [ "$2" = "--" ] ; then + required_output="" + else + required_output="$2" + fi + else + if ! tty -s ; then + required_output=$(cat) + else + required_output="" + fi + fi +} + +ok () +{ + required_result 0 "$@" +} + +ok_null () +{ + ok -- +} + +result_print () +{ + _passed="$1" + _out="$2" + _rc="$3" + _iteration="$4" + + if [ "$EVENTSCRIPT_TESTS_VERBOSE" = "yes" ] || ! $_passed ; then + if [ -n "$_iteration" ] ; then + cat <"$_outr" + + _outf=$(mktemp) + echo "$_out" >"$_outf" + + cat <&1) + + result_check +} + +simple_test_event () +{ + # If something has previously failed then don't continue. + : ${_passed:=true} + $_passed || return 1 + + event="$1" ; shift + echo "##################################################" + simple_test "$@" +} + +simple_test_command () +{ + # If something has previously failed then don't continue. + : ${_passed:=true} + $_passed || return 1 + + echo "##################################################" + echo "Running command \"$*\"" + _out=$("$@" 2>&1) + + result_check +} + +# Run an eventscript iteratively. +# - 1st argument is the number of iterations. +# - 2nd argument is something to eval to do setup for every iteration. +# The easiest thing to do here is to define a function and pass it +# here. +# - Subsequent arguments come in pairs: an iteration number and +# something to eval for that iteration. Each time an iteration +# number is matched the associated argument is given to eval after +# the default setup is done. The iteration numbers need to be given +# in ascending order. +# +# Some optional args can be given *before* these, surrounded by extra +# "--" args. These args are passed to the eventscript. Quoting is +# lost. +# +# One use of the 2nd and further arguments is to call +# required_result() to change what is expected of a particular +# iteration. +iterate_test () +{ + [ -n "$event" ] || die 'simple_test: $event not set' + + args="" + if [ "$1" = "--" ] ; then + shift + while [ "$1" != "--" ] ; do + args="${args}${args:+ }$1" + shift + done + shift + fi + + _repeats="$1" + _setup_default="$2" + shift 2 + + echo "Running $_repeats iterations of \"$script $event\" $args" + + _result=true + + for iteration in $(seq 1 $_repeats) ; do + # This is inefficient because the iteration-specific setup + # might completely replace the default one. However, running + # the default is good because it allows you to revert to a + # particular result without needing to specify it explicitly. + eval $_setup_default + if [ $iteration = "$1" ] ; then + eval $2 + shift 2 + fi + + _out=$($EVENTSCRIPTS_TESTS_TRACE "${CTDB_BASE}/events.d/$script" "$event" $args 2>&1) + _rc=$? + + if [ -n "$OUT_FILTER" ] ; then + _fout=$(echo "$_out" | eval sed -r $OUT_FILTER) + else + _fout="$_out" + fi + + if [ "$_fout" = "$required_output" -a $_rc = $required_rc ] ; then + _passed=true + else + _passed=false + _result=false + fi + + result_print "$_passed" "$_out" "$_rc" "$iteration" + done + + result_footer "$_result" +} diff --git a/ctdb/tests/eventscripts/simple/10.interface.init.001.sh b/ctdb/tests/eventscripts/simple/10.interface.init.001.sh deleted file mode 100755 index 5a61ab3efdd..00000000000 --- a/ctdb/tests/eventscripts/simple/10.interface.init.001.sh +++ /dev/null @@ -1,13 +0,0 @@ -#!/bin/sh - -. "${EVENTSCRIPTS_TESTS_DIR}/common.sh" - -define_test "no public addresses" - -setup_ctdb - -export CTDB_PUBLIC_ADDRESSES="$CTDB_ETC/does/not/exist" - -ok "No public addresses file found. Nothing to do for 10.interfaces" - -simple_test diff --git a/ctdb/tests/eventscripts/simple/10.interface.init.002.sh b/ctdb/tests/eventscripts/simple/10.interface.init.002.sh deleted file mode 100755 index 43bacd5231e..00000000000 --- a/ctdb/tests/eventscripts/simple/10.interface.init.002.sh +++ /dev/null @@ -1,11 +0,0 @@ -#!/bin/sh - -. "${EVENTSCRIPTS_TESTS_DIR}/common.sh" - -define_test "all interfaces up" - -setup_ctdb - -ok_null - -simple_test diff --git a/ctdb/tests/eventscripts/simple/10.interface.monitor.001.sh b/ctdb/tests/eventscripts/simple/10.interface.monitor.001.sh deleted file mode 100755 index 411355f1052..00000000000 --- a/ctdb/tests/eventscripts/simple/10.interface.monitor.001.sh +++ /dev/null @@ -1,13 +0,0 @@ -#!/bin/sh - -. "${EVENTSCRIPTS_TESTS_DIR}/common.sh" - -define_test "no public addresses" - -setup_ctdb - -export CTDB_PUBLIC_ADDRESSES="$CTDB_ETC/does/not/exist" - -ok_null - -simple_test diff --git a/ctdb/tests/eventscripts/simple/10.interface.monitor.002.sh b/ctdb/tests/eventscripts/simple/10.interface.monitor.002.sh deleted file mode 100755 index 43bacd5231e..00000000000 --- a/ctdb/tests/eventscripts/simple/10.interface.monitor.002.sh +++ /dev/null @@ -1,11 +0,0 @@ -#!/bin/sh - -. "${EVENTSCRIPTS_TESTS_DIR}/common.sh" - -define_test "all interfaces up" - -setup_ctdb - -ok_null - -simple_test diff --git a/ctdb/tests/eventscripts/simple/10.interface.monitor.003.sh b/ctdb/tests/eventscripts/simple/10.interface.monitor.003.sh deleted file mode 100755 index 5dd432816b2..00000000000 --- a/ctdb/tests/eventscripts/simple/10.interface.monitor.003.sh +++ /dev/null @@ -1,15 +0,0 @@ -#!/bin/sh - -. "${EVENTSCRIPTS_TESTS_DIR}/common.sh" - -define_test "1 interface down" - -setup_ctdb - -iface=$(ctdb_get_1_interface) - -ethtool_interfaces_down $iface - -required_result 1 "ERROR: No link on the public network interface $iface" - -simple_test diff --git a/ctdb/tests/eventscripts/simple/10.interface.monitor.004.sh b/ctdb/tests/eventscripts/simple/10.interface.monitor.004.sh deleted file mode 100755 index d215c400194..00000000000 --- a/ctdb/tests/eventscripts/simple/10.interface.monitor.004.sh +++ /dev/null @@ -1,15 +0,0 @@ -#!/bin/sh - -. "${EVENTSCRIPTS_TESTS_DIR}/common.sh" - -define_test "all interfaces up, 1 is a bond" - -setup_ctdb - -iface=$(ctdb_get_1_interface) - -setup_bond $iface - -ok_null - -simple_test diff --git a/ctdb/tests/eventscripts/simple/10.interface.monitor.005.sh b/ctdb/tests/eventscripts/simple/10.interface.monitor.005.sh deleted file mode 100755 index 00db01fe63e..00000000000 --- a/ctdb/tests/eventscripts/simple/10.interface.monitor.005.sh +++ /dev/null @@ -1,15 +0,0 @@ -#!/bin/sh - -. "${EVENTSCRIPTS_TESTS_DIR}/common.sh" - -define_test "1 bond, no active slaves" - -setup_ctdb - -iface=$(ctdb_get_1_interface) - -setup_bond $iface "None" - -required_result 1 "ERROR: No active slaves for bond device $iface" - -simple_test diff --git a/ctdb/tests/eventscripts/simple/10.interface.monitor.006.sh b/ctdb/tests/eventscripts/simple/10.interface.monitor.006.sh deleted file mode 100755 index 862a9723730..00000000000 --- a/ctdb/tests/eventscripts/simple/10.interface.monitor.006.sh +++ /dev/null @@ -1,15 +0,0 @@ -#!/bin/sh - -. "${EVENTSCRIPTS_TESTS_DIR}/common.sh" - -define_test "1 bond, active slaves, link down" - -setup_ctdb - -iface=$(ctdb_get_1_interface) - -setup_bond $iface "" "down" - -required_result 1 "ERROR: public network interface $iface is down" - -simple_test diff --git a/ctdb/tests/eventscripts/simple/10.interface.monitor.007.sh b/ctdb/tests/eventscripts/simple/10.interface.monitor.007.sh deleted file mode 100755 index 004247ef67f..00000000000 --- a/ctdb/tests/eventscripts/simple/10.interface.monitor.007.sh +++ /dev/null @@ -1,13 +0,0 @@ -#!/bin/sh - -. "${EVENTSCRIPTS_TESTS_DIR}/common.sh" - -define_test "unknown interface, up" - -setup_ctdb - -export CTDB_PUBLIC_INTERFACE="dev999" - -ok_null - -simple_test diff --git a/ctdb/tests/eventscripts/simple/10.interface.monitor.008.sh b/ctdb/tests/eventscripts/simple/10.interface.monitor.008.sh deleted file mode 100755 index aa59151c2a7..00000000000 --- a/ctdb/tests/eventscripts/simple/10.interface.monitor.008.sh +++ /dev/null @@ -1,15 +0,0 @@ -#!/bin/sh - -. "${EVENTSCRIPTS_TESTS_DIR}/common.sh" - -define_test "unknown interface, down, up" - -setup_ctdb - -iface="dev999" -export CTDB_PUBLIC_INTERFACE="$iface" - -#EVENTSCRIPTS_TESTS_TRACE="sh -x" -iterate_test 3 "ok_null" \ - 1 'ethtool_interfaces_down "$iface" ; required_result 1 "ERROR: No link on the public network interface $iface"' \ - 2 'ethtool_interfaces_up "$iface"' diff --git a/ctdb/tests/eventscripts/simple/10.interface.monitor.009.sh b/ctdb/tests/eventscripts/simple/10.interface.monitor.009.sh deleted file mode 100755 index ab890f34422..00000000000 --- a/ctdb/tests/eventscripts/simple/10.interface.monitor.009.sh +++ /dev/null @@ -1,17 +0,0 @@ -#!/bin/sh - -. "${EVENTSCRIPTS_TESTS_DIR}/common.sh" - -define_test "CTDB_PARTIALLY_ONLINE_INTERFACES, 1 down" - -setup_ctdb - -iface=$(ctdb_get_1_interface) - -export CTDB_PARTIALLY_ONLINE_INTERFACES="yes" - -ethtool_interfaces_down "$iface" - -ok "ERROR: No link on the public network interface $iface" - -simple_test diff --git a/ctdb/tests/eventscripts/simple/10.interface.monitor.010.sh b/ctdb/tests/eventscripts/simple/10.interface.monitor.010.sh deleted file mode 100755 index 476d2c9f69b..00000000000 --- a/ctdb/tests/eventscripts/simple/10.interface.monitor.010.sh +++ /dev/null @@ -1,19 +0,0 @@ -#!/bin/sh - -. "${EVENTSCRIPTS_TESTS_DIR}/common.sh" - -define_test "CTDB_PARTIALLY_ONLINE_INTERFACES, all down" - -setup_ctdb - -ifaces=$(ctdb_get_interfaces) - -export CTDB_PARTIALLY_ONLINE_INTERFACES="yes" - -ethtool_interfaces_down $ifaces - -msg=$(for i in $ifaces ; do echo "ERROR: No link on the public network interface $i" ; done) - -required_result 1 "$msg" - -simple_test diff --git a/ctdb/tests/eventscripts/simple/10.interface.monitor.011.sh b/ctdb/tests/eventscripts/simple/10.interface.monitor.011.sh deleted file mode 100755 index 3e5ba34acec..00000000000 --- a/ctdb/tests/eventscripts/simple/10.interface.monitor.011.sh +++ /dev/null @@ -1,19 +0,0 @@ -#!/bin/sh - -. "${EVENTSCRIPTS_TESTS_DIR}/common.sh" - -define_test "CTDB_PARTIALLY_ONLINE_INTERFACES, 1 bond down" - -setup_ctdb - -iface=$(ctdb_get_1_interface) - -setup_bond $iface "None" - -export CTDB_PARTIALLY_ONLINE_INTERFACES="yes" - -ethtool_interfaces_down "$iface" - -ok "ERROR: No active slaves for bond device $iface" - -simple_test diff --git a/ctdb/tests/eventscripts/simple/10.interface.monitor.012.sh b/ctdb/tests/eventscripts/simple/10.interface.monitor.012.sh deleted file mode 100755 index d27c423e442..00000000000 --- a/ctdb/tests/eventscripts/simple/10.interface.monitor.012.sh +++ /dev/null @@ -1,23 +0,0 @@ -#!/bin/sh - -. "${EVENTSCRIPTS_TESTS_DIR}/common.sh" - -define_test "CTDB_PARTIALLY_ONLINE_INTERFACES, 1 bond down" - -setup_ctdb - -ifaces=$(ctdb_get_interfaces) - -for i in $ifaces ; do - setup_bond $i "None" -done - -export CTDB_PARTIALLY_ONLINE_INTERFACES="yes" - -ethtool_interfaces_down $ifaces - -msg=$(for i in $ifaces ; do echo "ERROR: No active slaves for bond device $i" ; done) - -required_result 1 "$msg" - -simple_test diff --git a/ctdb/tests/eventscripts/simple/10.interface.monitor.013.sh b/ctdb/tests/eventscripts/simple/10.interface.monitor.013.sh deleted file mode 100755 index 88e884dc84d..00000000000 --- a/ctdb/tests/eventscripts/simple/10.interface.monitor.013.sh +++ /dev/null @@ -1,15 +0,0 @@ -#!/bin/sh - -. "${EVENTSCRIPTS_TESTS_DIR}/common.sh" - -define_test "1 bond, active slaves, link down" - -setup_ctdb - -iface=$(ctdb_get_1_interface) - -setup_bond $iface "" "up" "down" - -required_result 1 "ERROR: No active slaves for 802.ad bond device $iface" - -simple_test diff --git a/ctdb/tests/eventscripts/simple/10.interface.monitor.014.sh b/ctdb/tests/eventscripts/simple/10.interface.monitor.014.sh deleted file mode 100755 index 97cf253c3b7..00000000000 --- a/ctdb/tests/eventscripts/simple/10.interface.monitor.014.sh +++ /dev/null @@ -1,16 +0,0 @@ -#!/bin/sh - -. "${EVENTSCRIPTS_TESTS_DIR}/common.sh" - -define_test "spurious addresses on interface, no action" - -setup_ctdb - -iface=$(ctdb_get_1_interface) - -ip addr add 192.168.253.253/24 dev $iface -ip addr add 192.168.254.254/24 dev $iface - -ok_null - -simple_test diff --git a/ctdb/tests/eventscripts/simple/10.interface.monitor.015.sh b/ctdb/tests/eventscripts/simple/10.interface.monitor.015.sh deleted file mode 100755 index 6810733b541..00000000000 --- a/ctdb/tests/eventscripts/simple/10.interface.monitor.015.sh +++ /dev/null @@ -1,22 +0,0 @@ -#!/bin/sh - -. "${EVENTSCRIPTS_TESTS_DIR}/common.sh" - -define_test "spurious addresses on interface, delete them" - -setup_ctdb - -iface=$(ctdb_get_1_interface) - -ip addr add 192.168.253.253/24 dev $iface -ip addr add 192.168.254.254/24 dev $iface - -export CTDB_DELETE_UNEXPECTED_IPS="yes" - -ok <"$rpc_fail_limits_file" - -services="knfsd|mountd|rquotad|lockd|statd" - -echo "Doing rough check of file format..." - -! grep -v -E "^(${services}) " "$rpc_fail_limits_file" diff --git a/ctdb/tests/eventscripts/simple/60.nfs.monitor.101.sh b/ctdb/tests/eventscripts/simple/60.nfs.monitor.101.sh deleted file mode 100755 index 657db97a071..00000000000 --- a/ctdb/tests/eventscripts/simple/60.nfs.monitor.101.sh +++ /dev/null @@ -1,11 +0,0 @@ -#!/bin/sh - -. "${EVENTSCRIPTS_TESTS_DIR}/common.sh" - -define_test "all services available" - -setup_nfs - -ok_null - -simple_test diff --git a/ctdb/tests/eventscripts/simple/60.nfs.monitor.111.sh b/ctdb/tests/eventscripts/simple/60.nfs.monitor.111.sh deleted file mode 100755 index 8dcde029dd0..00000000000 --- a/ctdb/tests/eventscripts/simple/60.nfs.monitor.111.sh +++ /dev/null @@ -1,12 +0,0 @@ -#!/bin/sh - -. "${EVENTSCRIPTS_TESTS_DIR}/common.sh" - -define_test "knfsd down, 1 iteration" - -setup_nfs -rpc_services_down "nfs" - -ok_null - -simple_test diff --git a/ctdb/tests/eventscripts/simple/60.nfs.monitor.112.sh b/ctdb/tests/eventscripts/simple/60.nfs.monitor.112.sh deleted file mode 100755 index de796ebd07d..00000000000 --- a/ctdb/tests/eventscripts/simple/60.nfs.monitor.112.sh +++ /dev/null @@ -1,15 +0,0 @@ -#!/bin/sh - -. "${EVENTSCRIPTS_TESTS_DIR}/common.sh" - -define_test "knfsd down, 6 iterations" - -# knfsd fails and attempts to restart it fail. - -setup_nfs -rpc_services_down "nfs" - -iterate_test 6 'ok_null' \ - 2 'rpc_set_service_failure_response "knfsd"' \ - 4 'rpc_set_service_failure_response "knfsd"' \ - 6 'rpc_set_service_failure_response "knfsd"' diff --git a/ctdb/tests/eventscripts/simple/60.nfs.monitor.121.sh b/ctdb/tests/eventscripts/simple/60.nfs.monitor.121.sh deleted file mode 100755 index 062c3f6f5c4..00000000000 --- a/ctdb/tests/eventscripts/simple/60.nfs.monitor.121.sh +++ /dev/null @@ -1,17 +0,0 @@ -#!/bin/sh - -. "${EVENTSCRIPTS_TESTS_DIR}/common.sh" - -define_test "lockd down, 15 iterations" - -# This simulates an ongoing failure in the eventscript's automated -# attempts to restart the service. That is, the eventscript is unable -# to restart the service. - -setup_nfs -rpc_services_down "nlockmgr" - -#EVENTSCRIPTS_TESTS_TRACE="sh -x" -iterate_test 15 "ok_null" \ - 10 "rpc_set_service_failure_response 'lockd'" \ - 15 "rpc_set_service_failure_response 'lockd'" diff --git a/ctdb/tests/eventscripts/simple/60.nfs.monitor.122.sh b/ctdb/tests/eventscripts/simple/60.nfs.monitor.122.sh deleted file mode 100755 index b93dba7b978..00000000000 --- a/ctdb/tests/eventscripts/simple/60.nfs.monitor.122.sh +++ /dev/null @@ -1,19 +0,0 @@ -#!/bin/sh - -. "${EVENTSCRIPTS_TESTS_DIR}/common.sh" - -define_test "lockd down, 15 iterations, back up after 10" - -# This simulates a success the eventscript's automated attempts to -# restart the service. - -setup_nfs -rpc_services_down "nlockmgr" - -# Iteration 10 should try to restart rpc.lockd. However, our test -# stub rpc.lockd does nothing, so we have to explicitly flag it as up. - -iterate_test 15 "ok_null" \ - 10 "rpc_set_service_failure_response 'lockd'" \ - 11 "rpc_services_up nlockmgr" - diff --git a/ctdb/tests/eventscripts/simple/60.nfs.monitor.131.sh b/ctdb/tests/eventscripts/simple/60.nfs.monitor.131.sh deleted file mode 100755 index 84d20b761ce..00000000000 --- a/ctdb/tests/eventscripts/simple/60.nfs.monitor.131.sh +++ /dev/null @@ -1,10 +0,0 @@ -#!/bin/sh - -. "${EVENTSCRIPTS_TESTS_DIR}/common.sh" - -define_test "rquotad down, 5 iterations" - -setup_nfs -rpc_services_down "rquotad" - -iterate_test 5 'rpc_set_service_failure_response "rquotad"' diff --git a/ctdb/tests/eventscripts/simple/60.nfs.monitor.132.sh b/ctdb/tests/eventscripts/simple/60.nfs.monitor.132.sh deleted file mode 100755 index fad9a4c5903..00000000000 --- a/ctdb/tests/eventscripts/simple/60.nfs.monitor.132.sh +++ /dev/null @@ -1,15 +0,0 @@ -#!/bin/sh - -. "${EVENTSCRIPTS_TESTS_DIR}/common.sh" - -define_test "rquotad down, 5 iterations, back up after 1" - -# rquotad fails once but then comes back of its own accord after 1 -# failure. - -setup_nfs -rpc_services_down "rquotad" - -iterate_test 5 'ok_null' \ - 1 'rpc_set_service_failure_response "rquotad"' \ - 2 'rpc_services_up "rquotad"' diff --git a/ctdb/tests/eventscripts/simple/60.nfs.monitor.141.sh b/ctdb/tests/eventscripts/simple/60.nfs.monitor.141.sh deleted file mode 100755 index 377de6e229e..00000000000 --- a/ctdb/tests/eventscripts/simple/60.nfs.monitor.141.sh +++ /dev/null @@ -1,15 +0,0 @@ -#!/bin/sh - -. "${EVENTSCRIPTS_TESTS_DIR}/common.sh" - -define_test "statd down, 6 iterations" - -# statd fails and attempts to restart it fail. - -setup_nfs -rpc_services_down "status" - -iterate_test 6 'ok_null' \ - 2 'rpc_set_service_failure_response "statd"' \ - 4 'rpc_set_service_failure_response "statd"' \ - 6 'rpc_set_service_failure_response "statd"' diff --git a/ctdb/tests/eventscripts/simple/60.nfs.monitor.142.sh b/ctdb/tests/eventscripts/simple/60.nfs.monitor.142.sh deleted file mode 100755 index 3ca3cf64a78..00000000000 --- a/ctdb/tests/eventscripts/simple/60.nfs.monitor.142.sh +++ /dev/null @@ -1,14 +0,0 @@ -#!/bin/sh - -. "${EVENTSCRIPTS_TESTS_DIR}/common.sh" - -define_test "statd down, 8 iterations, back up after 2" - -# statd fails and the first attempt to restart it succeeds. - -setup_nfs -rpc_services_down "status" - -iterate_test 8 'ok_null' \ - 2 'rpc_set_service_failure_response "statd"' \ - 3 'rpc_services_up "status"' diff --git a/ctdb/tests/eventscripts/simple/60.nfs.monitor.151.sh b/ctdb/tests/eventscripts/simple/60.nfs.monitor.151.sh deleted file mode 100755 index af2dd26f5d2..00000000000 --- a/ctdb/tests/eventscripts/simple/60.nfs.monitor.151.sh +++ /dev/null @@ -1,12 +0,0 @@ -#!/bin/sh - -. "${EVENTSCRIPTS_TESTS_DIR}/common.sh" - -define_test "mountd down, 1 iteration" - -setup_nfs -rpc_services_down "mountd" - -ok_null - -simple_test diff --git a/ctdb/tests/eventscripts/simple/60.nfs.monitor.152.sh b/ctdb/tests/eventscripts/simple/60.nfs.monitor.152.sh deleted file mode 100755 index 9aad819b749..00000000000 --- a/ctdb/tests/eventscripts/simple/60.nfs.monitor.152.sh +++ /dev/null @@ -1,18 +0,0 @@ -#!/bin/sh - -. "${EVENTSCRIPTS_TESTS_DIR}/common.sh" - -define_test "mountd down, 10 iterations" - -# This simulates an ongoing failure in the eventscript's automated -# attempts to restart the service. That is, the eventscript is unable -# to restart the service. - -setup_nfs -rpc_services_down "mountd" - -iterate_test 10 "ok_null" \ - 5 "rpc_set_service_failure_response 'mountd'" \ - 10 "rpc_set_service_failure_response 'mountd'" - -#export FAKE_NETSTAT_TCP_ESTABLISHED="10.0.0.1:2049|10.254.254.1:12301 10.0.0.1:2049|10.254.254.1:12302 10.0.0.1:2049|10.254.254.1:12303 10.0.0.1:2049|10.254.254.2:12304 10.0.0.1:2049|10.254.254.2:12305" diff --git a/ctdb/tests/eventscripts/simple/60.nfs.monitor.153.sh b/ctdb/tests/eventscripts/simple/60.nfs.monitor.153.sh deleted file mode 100755 index 6b2750c82c8..00000000000 --- a/ctdb/tests/eventscripts/simple/60.nfs.monitor.153.sh +++ /dev/null @@ -1,15 +0,0 @@ -#!/bin/sh - -. "${EVENTSCRIPTS_TESTS_DIR}/common.sh" - -define_test "mountd down, 10 iterations, back up after 5" - -setup_nfs -rpc_services_down "mountd" - -# Iteration 5 should try to restart rpc.mountd. However, our test -# stub rpc.mountd does nothing, so we have to explicitly flag it as -# up. -iterate_test 10 "ok_null" \ - 5 "rpc_set_service_failure_response 'mountd'" \ - 6 "rpc_services_up mountd" diff --git a/ctdb/tests/eventscripts/simple/60.nfs.monitor.161.sh b/ctdb/tests/eventscripts/simple/60.nfs.monitor.161.sh deleted file mode 100755 index 4abe68eaba7..00000000000 --- a/ctdb/tests/eventscripts/simple/60.nfs.monitor.161.sh +++ /dev/null @@ -1,13 +0,0 @@ -#!/bin/sh - -. "${EVENTSCRIPTS_TESTS_DIR}/common.sh" - -define_test "2nd share missing" - -setup_nfs - -shares_missing "ERROR: nfs directory \"%s\" not available" 2 - -required_result 1 "$MISSING_SHARES_TEXT" - -simple_test diff --git a/ctdb/tests/eventscripts/simple/60.nfs.monitor.162.sh b/ctdb/tests/eventscripts/simple/60.nfs.monitor.162.sh deleted file mode 100755 index 865b1c635a6..00000000000 --- a/ctdb/tests/eventscripts/simple/60.nfs.monitor.162.sh +++ /dev/null @@ -1,14 +0,0 @@ -#!/bin/sh - -. "${EVENTSCRIPTS_TESTS_DIR}/common.sh" - -define_test "2nd share missing, skipping share checks" - -setup_nfs -export CTDB_NFS_SKIP_SHARE_CHECK="yes" - -shares_missing "ERROR: nfs directory \"%s\" not available" 2 - -ok_null - -simple_test diff --git a/ctdb/tests/eventscripts/stubs/ctdb b/ctdb/tests/eventscripts/stubs/ctdb index 81d275af708..e43784e3bb9 100755 --- a/ctdb/tests/eventscripts/stubs/ctdb +++ b/ctdb/tests/eventscripts/stubs/ctdb @@ -126,7 +126,7 @@ ip_reallocate () fi _flags="${_flags}${_flags:+,}${_this}" done - "$(dirname ${EVENTSCRIPTS_TESTS_DIR})/bin/ctdb_takeover_tests" \ + "$(dirname ${TEST_SUBDIR})/bin/ctdb_takeover_tests" \ "ctdb_takeover_run_core" "$_flags" <"$FAKE_CTDB_IP_LAYOUT" | sort >"$_t" mv "$_t" "$FAKE_CTDB_IP_LAYOUT" -- cgit