From 2c7dbb043f3b7c0fa31791a033f21e249593d9f7 Mon Sep 17 00:00:00 2001 From: Martin Schwenke Date: Wed, 6 Jan 2021 21:38:31 +1100 Subject: [PATCH] ctdb-tests: Add debug_locks.sh testing Signed-off-by: Martin Schwenke Reviewed-by: Amitay Isaacs --- .../UNIT/eventscripts/debug_locks.sh.001.sh | 9 + .../UNIT/eventscripts/debug_locks.sh.002.sh | 9 + .../UNIT/eventscripts/debug_locks.sh.003.sh | 9 + .../UNIT/eventscripts/debug_locks.sh.004.sh | 9 + .../UNIT/eventscripts/debug_locks.sh.005.sh | 9 + .../UNIT/eventscripts/debug_locks.sh.006.sh | 9 + .../UNIT/eventscripts/debug_locks.sh.007.sh | 9 + .../UNIT/eventscripts/debug_locks.sh.008.sh | 9 + .../tests/UNIT/eventscripts/etc-ctdb/rc.local | 8 + .../UNIT/eventscripts/scripts/debug_locks.sh | 210 ++++++++++++++++++ ctdb/tests/UNIT/eventscripts/scripts/local.sh | 8 +- ctdb/tests/UNIT/eventscripts/stubs/gstack | 19 ++ ctdb/tests/UNIT/eventscripts/stubs/ps | 36 +++ ctdb/tests/UNIT/eventscripts/stubs/stat | 53 +++++ 14 files changed, 405 insertions(+), 1 deletion(-) create mode 100755 ctdb/tests/UNIT/eventscripts/debug_locks.sh.001.sh create mode 100755 ctdb/tests/UNIT/eventscripts/debug_locks.sh.002.sh create mode 100755 ctdb/tests/UNIT/eventscripts/debug_locks.sh.003.sh create mode 100755 ctdb/tests/UNIT/eventscripts/debug_locks.sh.004.sh create mode 100755 ctdb/tests/UNIT/eventscripts/debug_locks.sh.005.sh create mode 100755 ctdb/tests/UNIT/eventscripts/debug_locks.sh.006.sh create mode 100755 ctdb/tests/UNIT/eventscripts/debug_locks.sh.007.sh create mode 100755 ctdb/tests/UNIT/eventscripts/debug_locks.sh.008.sh create mode 100644 ctdb/tests/UNIT/eventscripts/scripts/debug_locks.sh create mode 100755 ctdb/tests/UNIT/eventscripts/stubs/gstack create mode 100755 ctdb/tests/UNIT/eventscripts/stubs/stat diff --git a/ctdb/tests/UNIT/eventscripts/debug_locks.sh.001.sh b/ctdb/tests/UNIT/eventscripts/debug_locks.sh.001.sh new file mode 100755 index 00000000000..8f102001a97 --- /dev/null +++ b/ctdb/tests/UNIT/eventscripts/debug_locks.sh.001.sh @@ -0,0 +1,9 @@ +#!/bin/sh + +. "${TEST_SCRIPTS_DIR}/unit.sh" + +define_test "DB S+ DB" + +setup + +do_test "DB" "S+" "DB" diff --git a/ctdb/tests/UNIT/eventscripts/debug_locks.sh.002.sh b/ctdb/tests/UNIT/eventscripts/debug_locks.sh.002.sh new file mode 100755 index 00000000000..31ae3dff1f6 --- /dev/null +++ b/ctdb/tests/UNIT/eventscripts/debug_locks.sh.002.sh @@ -0,0 +1,9 @@ +#!/bin/sh + +. "${TEST_SCRIPTS_DIR}/unit.sh" + +define_test "DB D. DB" + +setup + +do_test "DB" "D." "DB" diff --git a/ctdb/tests/UNIT/eventscripts/debug_locks.sh.003.sh b/ctdb/tests/UNIT/eventscripts/debug_locks.sh.003.sh new file mode 100755 index 00000000000..89ab2f1bb58 --- /dev/null +++ b/ctdb/tests/UNIT/eventscripts/debug_locks.sh.003.sh @@ -0,0 +1,9 @@ +#!/bin/sh + +. "${TEST_SCRIPTS_DIR}/unit.sh" + +define_test "RECORD S+ DB" + +setup + +do_test "RECORD" "S+" "DB" diff --git a/ctdb/tests/UNIT/eventscripts/debug_locks.sh.004.sh b/ctdb/tests/UNIT/eventscripts/debug_locks.sh.004.sh new file mode 100755 index 00000000000..35500cbd04c --- /dev/null +++ b/ctdb/tests/UNIT/eventscripts/debug_locks.sh.004.sh @@ -0,0 +1,9 @@ +#!/bin/sh + +. "${TEST_SCRIPTS_DIR}/unit.sh" + +define_test "RECORD D. DB" + +setup + +do_test "RECORD" "D." "DB" diff --git a/ctdb/tests/UNIT/eventscripts/debug_locks.sh.005.sh b/ctdb/tests/UNIT/eventscripts/debug_locks.sh.005.sh new file mode 100755 index 00000000000..10cbade46a5 --- /dev/null +++ b/ctdb/tests/UNIT/eventscripts/debug_locks.sh.005.sh @@ -0,0 +1,9 @@ +#!/bin/sh + +. "${TEST_SCRIPTS_DIR}/unit.sh" + +define_test "DB S+ RECORD" + +setup + +do_test "DB" "S+" "RECORD" diff --git a/ctdb/tests/UNIT/eventscripts/debug_locks.sh.006.sh b/ctdb/tests/UNIT/eventscripts/debug_locks.sh.006.sh new file mode 100755 index 00000000000..c4988b7e26d --- /dev/null +++ b/ctdb/tests/UNIT/eventscripts/debug_locks.sh.006.sh @@ -0,0 +1,9 @@ +#!/bin/sh + +. "${TEST_SCRIPTS_DIR}/unit.sh" + +define_test "DB D. RECORD" + +setup + +do_test "DB" "D." "RECORD" diff --git a/ctdb/tests/UNIT/eventscripts/debug_locks.sh.007.sh b/ctdb/tests/UNIT/eventscripts/debug_locks.sh.007.sh new file mode 100755 index 00000000000..b186d2037a5 --- /dev/null +++ b/ctdb/tests/UNIT/eventscripts/debug_locks.sh.007.sh @@ -0,0 +1,9 @@ +#!/bin/sh + +. "${TEST_SCRIPTS_DIR}/unit.sh" + +define_test "RECORD S+ RECORD" + +setup + +do_test "RECORD" "S+" "RECORD" diff --git a/ctdb/tests/UNIT/eventscripts/debug_locks.sh.008.sh b/ctdb/tests/UNIT/eventscripts/debug_locks.sh.008.sh new file mode 100755 index 00000000000..7b7ac9be8d4 --- /dev/null +++ b/ctdb/tests/UNIT/eventscripts/debug_locks.sh.008.sh @@ -0,0 +1,9 @@ +#!/bin/sh + +. "${TEST_SCRIPTS_DIR}/unit.sh" + +define_test "RECORD D. RECORD" + +setup + +do_test "RECORD" "D." "RECORD" diff --git a/ctdb/tests/UNIT/eventscripts/etc-ctdb/rc.local b/ctdb/tests/UNIT/eventscripts/etc-ctdb/rc.local index 72a79bc66ac..e9a7f99829a 100755 --- a/ctdb/tests/UNIT/eventscripts/etc-ctdb/rc.local +++ b/ctdb/tests/UNIT/eventscripts/etc-ctdb/rc.local @@ -46,6 +46,9 @@ get_proc () meminfo) echo "$FAKE_PROC_MEMINFO" ;; + locks) + echo "$FAKE_PROC_LOCKS" + ;; *) echo "get_proc: \"$1\" not implemented" exit 1 @@ -58,4 +61,9 @@ background_with_logging () "$@" 2>&1 ] fake_stack_trace_for_pid_${_pid}/stack+0x0/0xff +EOF + ;; + *) + cat <, argv=) at ${_command}.c +EOF + ;; + esac +} + +do_test () +{ + _holder_scope="$1" + _holder_state="$2" + _helper_scope="$3" + + FAKE_PS_MAP=$(cat < POSIX ADVISORY WRITE 4132032 ${_locking_tdb_id} 168 170 +EOF + ) + elif [ "$_helper_scope" = "RECORD" ] ; then + _helper_lock=$(cat < POSIX ADVISORY WRITE 4132032 ${_locking_tdb_id} 112736 112736 +EOF + ) + fi + _t=$(cat <, argv=) at ${command}.c +EOF diff --git a/ctdb/tests/UNIT/eventscripts/stubs/ps b/ctdb/tests/UNIT/eventscripts/stubs/ps index f8e0ae0ba8a..744ba3becd8 100755 --- a/ctdb/tests/UNIT/eventscripts/stubs/ps +++ b/ctdb/tests/UNIT/eventscripts/stubs/ps @@ -1,5 +1,41 @@ #!/bin/sh +usage () +{ + echo "ps [ -p PID | -o FORMAT | aufxww ]" + exit 1 +} + +while getopts "o:p:h:?" opt ; do + case "$opt" in + o) format="$OPTARG" ;; + p) pid="$OPTARG" ;; + \?|h) usage ;; + esac +done +shift $((OPTIND - 1)) + +if [ -n "$pid" ] && [ -n "$FAKE_PS_MAP" ] ; then + # shellcheck disable=SC1001 + case "$format" in + comm\=) + echo "$FAKE_PS_MAP" | + awk -v pid="$pid" '$1 == pid { print $2 }' + ;; + state\=) + echo "$FAKE_PS_MAP" | + awk -v pid="$pid" '$1 == pid { print $3 }' + ;; + esac + + exit +fi + +if [ "$1" != "auxfww" ] ; then + echo "option $1 not supported" + usage +fi + cat <