From 57146b0875e953925c3efe9d3092e9c878a4c9d7 Mon Sep 17 00:00:00 2001 From: Martin Schwenke Date: Mon, 15 Jun 2015 20:04:16 +1000 Subject: [PATCH] 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 Reviewed-by: Amitay Isaacs --- ctdb/tests/eventscripts/scripts/local.sh | 61 +++++++++++++++++--------------- 1 file 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 <] 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}[] 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}]: -[] 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}" ;; -- 2.11.4.GIT