Merge branch 'master' of git://git.pcp.io/pcp into qt
[pcp.git] / qa / 212
bloba339be6045567fbafe6eca510e9d4efca6d44421
1 #! /bin/sh
2 # PCP QA Test No. 212
3 # can I make pmdacisco dump core during exit()?
5 # Copyright (c) 1995-2002 Silicon Graphics, Inc. All Rights Reserved.
8 seq=`basename $0`
9 echo "QA output created by $seq"
11 # get standard environment, filters and checks
12 . ./common.product
13 . ./common.filter
14 . ./common.check
16 case $PCP_PLATFORM
19 echo "This version of cisco PMDA does not use sprocs" >$seq.notrun
20 echo "$seq: [not run] `cat $seq.notrun`"
21 exit 0
23 esac
25 status=0
26 _needclean=true
27 signal=$PCP_BINADM_DIR/pmsignal
28 trap "_cleanup" 0 1 2 3 15
30 _cleanup()
32 if $_needclean
33 then
34 if [ "`echo $PMCD_LOG_DIR/core*`" != "$PMCD_LOG_DIR/core*" ]
35 then
36 file $PMCD_LOG_DIR/core*
38 rm -f $tmp.*
39 $sudo ex - $PCP_PMCDCONF_PATH <<End-of-File
40 g/^#$seq#.*pmdacisco/s/^#$seq#//
43 End-of-File
44 _needclean=false
45 $sudo $PCP_RC_DIR/pcp restart | _filter_pcp_start
46 _wait_for_pmcd
47 _wait_for_pmlogger
49 exit $status
52 # real QA test starts here
53 status=1
54 $sudo rm -f $PMCD_LOG_DIR/core*
56 echo "SIGINT to pmdacisco parent ..."
57 for i in 1 2 3
59 for j in 1 2 3 4 5
61 pid=`ps $PCP_PS_ALL_FLAGS | grep pmdacisco | grep -v grep \
62 | $PCP_AWK_PROG '
63 { pid[$2]++; ppid[$3]++; next }
64 END { for (p in pid) {
65 for (pp in ppid) {
66 if (p == pp) {
67 print p
68 exit
72 }'`
73 [ ! -z "$pid" ] && break
74 sleep 1
75 done
77 if [ -z "$pid" ]
78 then
79 echo "Arrgh ... no pmdacisco parent process?"
80 ps $PCP_PS_ALL_FLAGS | grep pmdacisco
81 exit
83 $sudo $signal -s TERM $pid
84 sleep 5
85 [ "`echo core*`" != "core*" ] && _cleanup
86 echo "Restart with SIGHUP"
87 $sudo $signal -a -s HUP pmcd
88 sleep 5
89 done
91 echo "SIGINT to pmdacisco sproc ..."
92 for i in 1 2 3
94 pid=`ps $PCP_PS_ALL_FLAGS | grep pmdacisco | grep -v grep \
95 | $PCP_AWK_PROG '
96 { pid[$2]++; ppid[$3]++; next }
97 END { for (p in pid) {
98 fail=0
99 for (pp in ppid) {
100 if (p == pp) {
101 fail=1
102 break
105 if (fail == 0) {
106 print p
107 exit
111 if [ -z "$pid" ]
112 then
113 echo "Arrgh ... no pmdacisco sproc process?"
114 ps $PCP_PS_ALL_FLAGS | grep pmdacisco
115 exit
117 $sudo $signal -s TERM $pid
118 sleep 5
119 [ "`echo $PMCD_LOG_DIR/core*`" != "$PMCD_LOG_DIR/core*" ] && _cleanup
120 echo "Restart with SIGHUP"
121 $sudo $signal -a -s HUP pmcd
122 sleep 5
123 done
125 echo
126 echo "start pmcd ..."
127 for i in 1 2 3
129 rm -f $PMCD_LOG_DIR/core*
130 if [ $1 -eq 1 ]
131 then
132 $sudo $PCP_RC_DIR/pcp start | _filter_pcp_start
133 else
134 $sudo $PCP_RC_DIR/pcp restart | _filter_pcp_start
136 _wait_for_pmcd
137 [ "`echo $PMCD_LOG_DIR/core*`" != "$PMCD_LOG_DIR/core*" ] && _cleanup
138 done
140 echo
141 echo "stop pmcd ..."
142 for i in 1 2 3
144 $sudo $PCP_RC_DIR/pcp start | _filter_pcp_start
145 _wait_for_pmcd
146 rm -f $PMCD_LOG_DIR/core*
147 $sudo $PCP_RC_DIR/pcp stop | _filter_pcp_stop
148 [ "`echo $PMCD_LOG_DIR/core*`" != "$PMCD_LOG_DIR/core*" ] && _cleanup
149 done
150 $sudo $PCP_RC_DIR/pcp start | _filter_pcp_start
151 _wait_for_pmcd
153 echo
154 for i in 1 2 3
156 echo "[pass $i] configure pmdacisco and notify pmcd ..."
157 $sudo ex - $PCP_PMCDCONF_PATH <<End-of-File
158 g/^#$seq#.*pmdacisco/s/^#$seq#//
161 End-of-File
162 $sudo $PCP_RC_DIR/pcp restart | _filter_pcp_start
163 _wait_for_pmcd
165 echo "[pass $i] unconfigure pmdacisco and notify pmcd ..."
166 $sudo ex - $PCP_PMCDCONF_PATH <<End-of-File
167 g/^[^#].*pmdacisco/s/^/#$seq#/
170 End-of-File
171 rm -f $PMCD_LOG_DIR/core*
172 $sudo $signal -a -s HUP pmcd
173 [ "`echo $PMCD_LOG_DIR/core*`" != "$PMCD_LOG_DIR/core*" ] && _cleanup
174 done
176 echo
177 echo "all done ..."
178 status=0
179 exit