summaryrefslogtreecommitdiff
path: root/qa/212
diff options
context:
space:
mode:
authorIgor Pashev <pashev.igor@gmail.com>2014-10-26 12:33:50 +0400
committerIgor Pashev <pashev.igor@gmail.com>2014-10-26 12:33:50 +0400
commit47e6e7c84f008a53061e661f31ae96629bc694ef (patch)
tree648a07f3b5b9d67ce19b0fd72e8caa1175c98f1a /qa/212
downloadpcp-debian.tar.gz
Debian 3.9.10debian/3.9.10debian
Diffstat (limited to 'qa/212')
-rwxr-xr-xqa/212177
1 files changed, 177 insertions, 0 deletions
diff --git a/qa/212 b/qa/212
new file mode 100755
index 0000000..20bfaa4
--- /dev/null
+++ b/qa/212
@@ -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