From e0036996862fc9755b19ec495959e543bb6633fc Mon Sep 17 00:00:00 2001 From: Martin Schwenke Date: Fri, 6 Sep 2013 16:37:52 +1000 Subject: [PATCH] tests/eventscripts: Tests for memory checking in 00.ctdb ... plus updates to test infrastructure to support. Signed-off-by: Martin Schwenke (This used to be ctdb commit 4a388fc6bf54636b7e1f6da8e6aa451cddd574f7) --- .../tests/eventscripts/00.ctdb.monitor.001.sh | 15 +++++++ .../tests/eventscripts/00.ctdb.monitor.002.sh | 15 +++++++ .../tests/eventscripts/00.ctdb.monitor.003.sh | 19 ++++++++ .../tests/eventscripts/00.ctdb.monitor.004.sh | 17 +++++++ .../tests/eventscripts/00.ctdb.monitor.005.sh | 21 +++++++++ ctdb/tests/eventscripts/etc-ctdb/rc.local | 3 ++ ctdb/tests/eventscripts/scripts/local.sh | 45 +++++++++++++++++++ ctdb/tests/eventscripts/stubs/ctdb | 12 ++++- ctdb/tests/eventscripts/stubs/free | 9 ++++ ctdb/tests/eventscripts/stubs/ps | 12 +++++ 10 files changed, 166 insertions(+), 2 deletions(-) create mode 100755 ctdb/tests/eventscripts/00.ctdb.monitor.001.sh create mode 100755 ctdb/tests/eventscripts/00.ctdb.monitor.002.sh create mode 100755 ctdb/tests/eventscripts/00.ctdb.monitor.003.sh create mode 100755 ctdb/tests/eventscripts/00.ctdb.monitor.004.sh create mode 100755 ctdb/tests/eventscripts/00.ctdb.monitor.005.sh create mode 100755 ctdb/tests/eventscripts/stubs/free create mode 100755 ctdb/tests/eventscripts/stubs/ps diff --git a/ctdb/tests/eventscripts/00.ctdb.monitor.001.sh b/ctdb/tests/eventscripts/00.ctdb.monitor.001.sh new file mode 100755 index 00000000000..4290d13e15d --- /dev/null +++ b/ctdb/tests/eventscripts/00.ctdb.monitor.001.sh @@ -0,0 +1,15 @@ +#!/bin/sh + +. "${TEST_SCRIPTS_DIR}/unit.sh" + +define_test "Memory check, bad situation, no checks enabled" + +setup_memcheck "bad" + +CTDB_MONITOR_FREE_MEMORY="" +CTDB_MONITOR_FREE_MEMORY_WARN="" +CTDB_CHECK_SWAP_IS_NOT_USED="no" + +ok_null + +simple_test diff --git a/ctdb/tests/eventscripts/00.ctdb.monitor.002.sh b/ctdb/tests/eventscripts/00.ctdb.monitor.002.sh new file mode 100755 index 00000000000..6e9401233b2 --- /dev/null +++ b/ctdb/tests/eventscripts/00.ctdb.monitor.002.sh @@ -0,0 +1,15 @@ +#!/bin/sh + +. "${TEST_SCRIPTS_DIR}/unit.sh" + +define_test "Memory check, good situation, all enabled" + +setup_memcheck + +CTDB_MONITOR_FREE_MEMORY="500" +CTDB_MONITOR_FREE_MEMORY_WARN="1000" +CTDB_CHECK_SWAP_IS_NOT_USED="yes" + +ok_null + +simple_test diff --git a/ctdb/tests/eventscripts/00.ctdb.monitor.003.sh b/ctdb/tests/eventscripts/00.ctdb.monitor.003.sh new file mode 100755 index 00000000000..9e63ab50fd3 --- /dev/null +++ b/ctdb/tests/eventscripts/00.ctdb.monitor.003.sh @@ -0,0 +1,19 @@ +#!/bin/sh + +. "${TEST_SCRIPTS_DIR}/unit.sh" + +define_test "Memory check, bad situation, only swap check" + +setup_memcheck "bad" + +CTDB_MONITOR_FREE_MEMORY="" +CTDB_MONITOR_FREE_MEMORY_WARN="" +CTDB_CHECK_SWAP_IS_NOT_USED="yes" + +ok <] fake_stack_trace_for_pid_${1}+0x0/0xff" ;; + meminfo) + echo "$FAKE_PROC_MEMINFO" + ;; *) echo "get_proc: \"$1\" not implemented" exit 1 diff --git a/ctdb/tests/eventscripts/scripts/local.sh b/ctdb/tests/eventscripts/scripts/local.sh index 00da7732dd2..a522e788979 100644 --- a/ctdb/tests/eventscripts/scripts/local.sh +++ b/ctdb/tests/eventscripts/scripts/local.sh @@ -311,6 +311,51 @@ setup_ctdb () export CTDB_PARTIALLY_ONLINE_INTERFACES } +setup_memcheck () +{ + setup_ctdb + + _swap_total="5857276" + + if [ "$1" = "bad" ] ; then + _swap_free=" 4352" + _mem_cached=" 112" + _mem_free=" 468" + else + _swap_free="$_swap_total" + _mem_cached="1112" + _mem_free="1468" + fi + + export FAKE_PROC_MEMINFO="\ +MemTotal: 3940712 kB +MemFree: 225268 kB +Buffers: 146120 kB +Cached: 1139348 kB +SwapCached: 56016 kB +Active: 2422104 kB +Inactive: 1019928 kB +Active(anon): 1917580 kB +Inactive(anon): 523080 kB +Active(file): 504524 kB +Inactive(file): 496848 kB +Unevictable: 4844 kB +Mlocked: 4844 kB +SwapTotal: ${_swap_total} kB +SwapFree: ${_swap_free} kB +..." + + export FAKE_FREE_M="\ + total used free shared buffers cached +Mem: 3848 3634 213 0 142 ${_mem_cached} +-/+ buffers/cache: 2379 ${_mem_free} +Swap: 5719 246 5473" + + export CTDB_MONITOR_FREE_MEMORY + export CTDB_MONITOR_FREE_MEMORY_WARN + export CTDB_CHECK_SWAP_IS_NOT_USED +} + ctdb_get_interfaces () { # The echo/subshell forces all the output onto 1 line. diff --git a/ctdb/tests/eventscripts/stubs/ctdb b/ctdb/tests/eventscripts/stubs/ctdb index 58007f2e2b0..da84ed7cdfd 100755 --- a/ctdb/tests/eventscripts/stubs/ctdb +++ b/ctdb/tests/eventscripts/stubs/ctdb @@ -124,8 +124,8 @@ ip_reallocate () # Have non-zero flags _this=0 for _j in "$FAKE_CTDB_STATE/node-state/"*"/$_i" ; do - _t="${_j%/*}" # dirname - _f="${_t%/*}" # basename + _tf="${_j%/*}" # dirname + _f="${_tf##*/}" # basename _this=$(( $_this | $_f )) done else @@ -224,6 +224,13 @@ ctdb_disable () ###################################################################### +ctdb_shutdown () +{ + echo "CTDB says BYE!" +} + +###################################################################### + case "$1" in gettickles) setup_tickles @@ -322,5 +329,6 @@ case "$1" in enable) ctdb_enable "$@";; disable) ctdb_disable "$@";; moveip) ctdb_moveip "$@";; + shutdown) ctdb_shutdown "$@";; *) not_implemented "$1" ;; esac diff --git a/ctdb/tests/eventscripts/stubs/free b/ctdb/tests/eventscripts/stubs/free new file mode 100755 index 00000000000..64535099249 --- /dev/null +++ b/ctdb/tests/eventscripts/stubs/free @@ -0,0 +1,9 @@ +#!/bin/sh + +if [ "$1" = "-m" ] ; then + echo "$FAKE_FREE_M" + exit 0 +else + echo "free: not implemented - $*" + exit 1 +fi diff --git a/ctdb/tests/eventscripts/stubs/ps b/ctdb/tests/eventscripts/stubs/ps new file mode 100755 index 00000000000..5abeaf94e18 --- /dev/null +++ b/ctdb/tests/eventscripts/stubs/ps @@ -0,0 +1,12 @@ +#!/bin/sh + +cat <