tests: New tests for 00.ctdb "setup" event - set tunables from config
authorMartin Schwenke <martin@meltin.net>
Sun, 15 Feb 2015 03:39:51 +0000 (14:39 +1100)
committerAmitay Isaacs <amitay@gmail.com>
Thu, 26 Feb 2015 00:54:59 +0000 (11:54 +1100)
Unit test infrastructure tweaks to support.

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

tests/eventscripts/00.ctdb.setup.001.sh [new file with mode: 0755]
tests/eventscripts/00.ctdb.setup.002.sh [new file with mode: 0755]
tests/eventscripts/00.ctdb.setup.003.sh [new file with mode: 0755]
tests/eventscripts/00.ctdb.setup.004.sh [new file with mode: 0755]
tests/eventscripts/etc/sysconfig/ctdb
tests/eventscripts/scripts/local.sh
tests/eventscripts/stubs/ctdb

diff --git a/tests/eventscripts/00.ctdb.setup.001.sh b/tests/eventscripts/00.ctdb.setup.001.sh
new file mode 100755 (executable)
index 0000000..1e094f8
--- /dev/null
@@ -0,0 +1,11 @@
+#!/bin/sh
+
+. "${TEST_SCRIPTS_DIR}/unit.sh"
+
+define_test "setup, no tunables in config"
+
+setup_ctdb
+
+ok_null
+
+simple_test
diff --git a/tests/eventscripts/00.ctdb.setup.002.sh b/tests/eventscripts/00.ctdb.setup.002.sh
new file mode 100755 (executable)
index 0000000..c62b83c
--- /dev/null
@@ -0,0 +1,19 @@
+#!/bin/sh
+
+. "${TEST_SCRIPTS_DIR}/unit.sh"
+
+define_test "setup, known tunables in config"
+
+setup_ctdb
+
+setup_config <<EOF
+CTDB_SET_MonitorInterval=5
+CTDB_SET_TDBMutexEnabled=0
+EOF
+
+required_result 0 <<EOF
+Set MonitorInterval to 5
+Set TDBMutexEnabled to 0
+EOF
+
+simple_test
diff --git a/tests/eventscripts/00.ctdb.setup.003.sh b/tests/eventscripts/00.ctdb.setup.003.sh
new file mode 100755 (executable)
index 0000000..46bbc99
--- /dev/null
@@ -0,0 +1,20 @@
+#!/bin/sh
+
+. "${TEST_SCRIPTS_DIR}/unit.sh"
+
+define_test "setup, known and unknown tunables in config"
+
+setup_ctdb
+
+setup_config <<EOF
+CTDB_SET_MonitorInterval=5
+CTDB_SET_UnknownMagic=0
+EOF
+
+required_result 1 <<EOF
+Set MonitorInterval to 5
+Unable to set tunable variable 'UnknownMagic'
+Failed to set CTDB tunables
+EOF
+
+simple_test
diff --git a/tests/eventscripts/00.ctdb.setup.004.sh b/tests/eventscripts/00.ctdb.setup.004.sh
new file mode 100755 (executable)
index 0000000..6c3fbd5
--- /dev/null
@@ -0,0 +1,19 @@
+#!/bin/sh
+
+. "${TEST_SCRIPTS_DIR}/unit.sh"
+
+define_test "setup, known and obsolete tunables in config"
+
+setup_ctdb
+
+setup_config <<EOF
+CTDB_SET_MonitorInterval=5
+CTDB_SET_EventScriptUnhealthyOnTimeout=0
+EOF
+
+required_result 0 <<EOF
+Set EventScriptUnhealthyOnTimeout to 0
+Set MonitorInterval to 5
+EOF
+
+simple_test
index 4584c112fd14d3affe663bf7f56151d03392a864..fe0436d6f550d2bc5d363aee01721ff1537ac2a8 100644 (file)
@@ -1,2 +1,6 @@
 CTDB_RECOVERY_LOCK="/some/place/on/shared/storage"
 CTDB_DEBUGLEVEL=ERR
+
+if [ -n "$FAKE_CTDB_EXTRA_CONFIG" -a -r "$FAKE_CTDB_EXTRA_CONFIG" ] ; then
+   . "$FAKE_CTDB_EXTRA_CONFIG"
+fi
index f22311a4df9867c8b196bfe10992c0227d8742f6..e394bef458aeb027cf0350241c13fd737e0a6aae 100644 (file)
@@ -300,6 +300,9 @@ setup_ctdb ()
 
     export FAKE_CTDB_STATE="$EVENTSCRIPTS_TESTS_VAR_DIR/fake-ctdb"
 
+    export FAKE_CTDB_EXTRA_CONFIG="$EVENTSCRIPTS_TESTS_VAR_DIR/fake-config.sh"
+    rm -f "$FAKE_CTDB_EXTRA_CONFIG"
+
     export FAKE_CTDB_IFACES_DOWN="$FAKE_CTDB_STATE/ifaces-down"
     mkdir -p "$FAKE_CTDB_IFACES_DOWN"
     rm -f "$FAKE_CTDB_IFACES_DOWN"/*
@@ -309,6 +312,14 @@ setup_ctdb ()
     rm -f "$FAKE_CTDB_SCRIPTSTATUS"/*
 
     export CTDB_PARTIALLY_ONLINE_INTERFACES
+
+    export FAKE_CTDB_TUNABLES_OK="MonitorInterval TDBMutexEnabled DatabaseHashSize"
+    export FAKE_CTDB_TUNABLES_OBSOLETE="EventScriptUnhealthyOnTimeout"
+}
+
+setup_config ()
+{
+    cat >"$FAKE_CTDB_EXTRA_CONFIG"
 }
 
 setup_memcheck ()
index c44419672d5cd884a36fb70d5d563b2c8c4143e3..b9524b1968d51c9bbd2695482ace2dd55927cc8c 100755 (executable)
@@ -302,6 +302,30 @@ ctdb_natgwlist ()
 
 }
 
+######################################################################
+
+ctdb_setvar ()
+{
+    shift
+    _var="$1"
+
+    for _i in $FAKE_CTDB_TUNABLES_OK ; do
+       if [ "$_var" = "$_i" ] ; then
+           return 0
+       fi
+    done
+
+    for _i in $FAKE_CTDB_TUNABLES_OBSOLETE ; do
+       if [ "$_var" = "$_i" ] ; then
+           return 0
+       fi
+    done
+
+    echo "Unable to set tunable variable '${_var}'"
+    return 1
+}
+
+
 ######################################################################
 
 case "$1" in
@@ -405,5 +429,6 @@ case "$1" in
     shutdown)      ctdb_shutdown "$@";;
     setnatgwstate) ctdb_setnatgwstate "$@" ;;
     natgwlist)     ctdb_natgwlist "$@" ;;
+    setvar)       ctdb_setvar "$@" ;;
     *) not_implemented "$1" ;;
 esac