diff options
author | Martin Schwenke <martin@meltin.net> | 2015-06-15 20:04:16 +1000 |
---|---|---|
committer | Amitay Isaacs <amitay@samba.org> | 2015-07-14 09:57:17 +0200 |
commit | 57146b0875e953925c3efe9d3092e9c878a4c9d7 (patch) | |
tree | 32efbc9616b067f12e8e23a149fc6c655b59f409 /ctdb/tests | |
parent | 182ebc07289c776ca104e648911a53209bcdaf00 (diff) | |
download | samba-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.sh | 61 |
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}" ;; |