summaryrefslogtreecommitdiff
path: root/ctdb/tests
diff options
context:
space:
mode:
authorMartin Schwenke <martin@meltin.net>2015-06-15 20:04:16 +1000
committerAmitay Isaacs <amitay@samba.org>2015-07-14 09:57:17 +0200
commit57146b0875e953925c3efe9d3092e9c878a4c9d7 (patch)
tree32efbc9616b067f12e8e23a149fc6c655b59f409 /ctdb/tests
parent182ebc07289c776ca104e648911a53209bcdaf00 (diff)
downloadsamba-57146b0875e953925c3efe9d3092e9c878a4c9d7.tar.gz
ctdb-tests: Factor out stack dumping and background marking code
This makes the code that uses it easier to modify. Signed-off-by: Martin Schwenke <martin@meltin.net> Reviewed-by: Amitay Isaacs <amitay@gmail.com>
Diffstat (limited to 'ctdb/tests')
-rw-r--r--ctdb/tests/eventscripts/scripts/local.sh61
1 files changed, 33 insertions, 28 deletions
diff --git a/ctdb/tests/eventscripts/scripts/local.sh b/ctdb/tests/eventscripts/scripts/local.sh
index 60483231a1f..d9162420b41 100644
--- a/ctdb/tests/eventscripts/scripts/local.sh
+++ b/ctdb/tests/eventscripts/scripts/local.sh
@@ -874,6 +874,27 @@ nfs_load_config ()
done
}
+program_stack_traces ()
+{
+ _prog="$1"
+ _max="${2:-1}"
+
+ _count=1
+ for _pid in ${FAKE_NFSD_THREAD_PIDS:-$FAKE_RPC_THREAD_PIDS} ; do
+ [ $_count -le $_max ] || break
+
+ cat <<EOF
+Stack trace for ${_prog}[${_pid}]:
+[<ffffffff87654321>] fake_stack_trace_for_pid_${_pid}/stack+0x0/0xff
+EOF
+ _count=$(($_count + 1))
+ done
+}
+
+mark_background ()
+{
+ sed -e 's@^@\&@'
+}
# Set the required result for a particular RPC program having failed
# for a certain number of iterations. This is probably still a work
@@ -940,43 +961,27 @@ program $_pn version $_ver is not available"
restart*)
_p="rpc.${_progname}"
case "$_action" in
- *:b) _bg="&" ;;
- *) _bg="" ;;
+ *:b) _bg=mark_background ;;
+ *) _bg=cat ;;
esac
case "$_progname" in
nfsd)
+ _t=$(program_stack_traces "nfsd" 5)
+ _t="${_t}${_t:+${_nl}}Starting nfslock: OK
+Starting nfs: OK"
+ _t=$(echo "$_t" | $_bg)
_t="\
-Trying to restart NFS service"
-
- if [ -n "$CTDB_NFS_DUMP_STUCK_THREADS" ] ; then
- for _pid in $FAKE_NFSD_THREAD_PIDS ; do
- _t="\
-$_t
-${_bg}Stack trace for nfsd[${_pid}]:
-${_bg}[<ffffffff87654321>] fake_stack_trace_for_pid_${_pid}/stack+0x0/0xff"
- done
- fi
-
- _t="\
-${_t}
-${_bg}Starting nfslock: OK
-${_bg}Starting nfs: OK"
+Trying to restart NFS service
+${_t}"
;;
lockd)
- _t="\
-Trying to restart lock manager service
-${_bg}Starting nfslock: OK"
+ _t=$(echo "Starting nfslock: OK" | $_bg)
+ _t="Trying to restart lock manager service${_t:+${_nl}}${_t}"
;;
*)
_t="Trying to restart $_progname [${_p}]"
- if [ -n "$CTDB_NFS_DUMP_STUCK_THREADS" ] ; then
- for _pid in $FAKE_RPC_THREAD_PIDS ; do
- _t="\
-$_t
-Stack trace for ${_p}[${_pid}]:
-[<ffffffff87654321>] fake_stack_trace_for_pid_${_pid}/stack+0x0/0xff"
- done
- fi
+ _stacks=$(program_stack_traces "$_p" 5)
+ _t="${_t}${_stacks:+${_nl}}${_stacks}"
esac
_out="${_out}${_out:+${_nl}}${_t}"
;;