diff options
author | Igor Pashev <pashev.igor@gmail.com> | 2014-10-26 12:33:50 +0400 |
---|---|---|
committer | Igor Pashev <pashev.igor@gmail.com> | 2014-10-26 12:33:50 +0400 |
commit | 47e6e7c84f008a53061e661f31ae96629bc694ef (patch) | |
tree | 648a07f3b5b9d67ce19b0fd72e8caa1175c98f1a /qa/212 | |
download | pcp-debian.tar.gz |
Debian 3.9.10debian/3.9.10debian
Diffstat (limited to 'qa/212')
-rwxr-xr-x | qa/212 | 177 |
1 files changed, 177 insertions, 0 deletions
@@ -0,0 +1,177 @@ +#! /bin/sh +# PCP QA Test No. 212 +# can I make pmdacisco dump core during exit()? +# +# Copyright (c) 1995-2002 Silicon Graphics, Inc. All Rights Reserved. +# + +seq=`basename $0` +echo "QA output created by $seq" + +. ./localconfig +if [ $PCP_PLATFORM != irix ] +then + echo "This version of cisco PMDA does not use sprocs" >$seq.notrun + echo "$seq: [not run] `cat $seq.notrun`" + exit 0 +fi + +. ./common.product +. ./common.check +. ./common.filter + +status=0 +_needclean=true +signal=$PCP_BINADM_DIR/pmsignal +trap "_cleanup" 0 1 2 3 15 + +_cleanup() +{ + if $_needclean + then + if [ "`echo $PMCD_LOG_DIR/core*`" != "$PMCD_LOG_DIR/core*" ] + then + file $PMCD_LOG_DIR/core* + fi + rm -f $tmp.* + $sudo ex - $PCP_PMCDCONF_PATH <<End-of-File +g/^#$seq#.*pmdacisco/s/^#$seq#// +w! +q +End-of-File + _needclean=false + $sudo $PCP_RC_DIR/pcp restart | _filter_pcp_start + _wait_for_pmcd + _wait_for_pmlogger + fi + exit $status +} + +# real QA test starts here +status=1 +$sudo rm -f $PMCD_LOG_DIR/core* + +echo "SIGINT to pmdacisco parent ..." +for i in 1 2 3 +do + for j in 1 2 3 4 5 + do + pid=`ps $PCP_PS_ALL_FLAGS | grep pmdacisco | grep -v grep \ + | $PCP_AWK_PROG ' + { pid[$2]++; ppid[$3]++; next } + END { for (p in pid) { + for (pp in ppid) { + if (p == pp) { + print p + exit + } + } + } + }'` + [ ! -z "$pid" ] && break + sleep 1 + done + + if [ -z "$pid" ] + then + echo "Arrgh ... no pmdacisco parent process?" + ps $PCP_PS_ALL_FLAGS | grep pmdacisco + exit + fi + $sudo $signal -s TERM $pid + sleep 5 + [ "`echo core*`" != "core*" ] && _cleanup + echo "Restart with SIGHUP" + $sudo $signal -a -s HUP pmcd + sleep 5 +done + +echo "SIGINT to pmdacisco sproc ..." +for i in 1 2 3 +do + pid=`ps $PCP_PS_ALL_FLAGS | grep pmdacisco | grep -v grep \ + | $PCP_AWK_PROG ' + { pid[$2]++; ppid[$3]++; next } +END { for (p in pid) { + fail=0 + for (pp in ppid) { + if (p == pp) { + fail=1 + break + } + } + if (fail == 0) { + print p + exit + } + } + }'` + if [ -z "$pid" ] + then + echo "Arrgh ... no pmdacisco sproc process?" + ps $PCP_PS_ALL_FLAGS | grep pmdacisco + exit + fi + $sudo $signal -s TERM $pid + sleep 5 + [ "`echo $PMCD_LOG_DIR/core*`" != "$PMCD_LOG_DIR/core*" ] && _cleanup + echo "Restart with SIGHUP" + $sudo $signal -a -s HUP pmcd + sleep 5 +done + +echo +echo "start pmcd ..." +for i in 1 2 3 +do + rm -f $PMCD_LOG_DIR/core* + if [ $1 -eq 1 ] + then + $sudo $PCP_RC_DIR/pcp start | _filter_pcp_start + else + $sudo $PCP_RC_DIR/pcp restart | _filter_pcp_start + fi + _wait_for_pmcd + [ "`echo $PMCD_LOG_DIR/core*`" != "$PMCD_LOG_DIR/core*" ] && _cleanup +done + +echo +echo "stop pmcd ..." +for i in 1 2 3 +do + $sudo $PCP_RC_DIR/pcp start | _filter_pcp_start + _wait_for_pmcd + rm -f $PMCD_LOG_DIR/core* + $sudo $PCP_RC_DIR/pcp stop | _filter_pcp_stop + [ "`echo $PMCD_LOG_DIR/core*`" != "$PMCD_LOG_DIR/core*" ] && _cleanup +done +$sudo $PCP_RC_DIR/pcp start | _filter_pcp_start +_wait_for_pmcd + +echo +for i in 1 2 3 +do + echo "[pass $i] configure pmdacisco and notify pmcd ..." + $sudo ex - $PCP_PMCDCONF_PATH <<End-of-File +g/^#$seq#.*pmdacisco/s/^#$seq#// +w! +q +End-of-File + $sudo $PCP_RC_DIR/pcp restart | _filter_pcp_start + _wait_for_pmcd + + echo "[pass $i] unconfigure pmdacisco and notify pmcd ..." + $sudo ex - $PCP_PMCDCONF_PATH <<End-of-File +g/^[^#].*pmdacisco/s/^/#$seq#/ +w! +q +End-of-File + rm -f $PMCD_LOG_DIR/core* + $sudo $signal -a -s HUP pmcd + [ "`echo $PMCD_LOG_DIR/core*`" != "$PMCD_LOG_DIR/core*" ] && _cleanup +done + +echo +echo "all done ..." +status=0 +exit |