docs: tweak formatting in pmrep(1) archive folio example
[pcp.git] / qa / 326
blobbc5cafff524bdde9fadf841a34837e9ef058eec1
1 #! /bin/sh
2 # PCP QA Test No. 326
3 # Check PMCD state change notification, aka PMCD reset
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 filters
12 . ./common.product
13 . ./common.filter
14 . ./common.check
16 signal=$PCP_BINADM_DIR/pmsignal
17 status=1
18 done_clean=false
19 LOCALHOST=`hostname`
20 [ $PCP_VER -lt 30806 ] && LOCALHOST=`echo $LOCALHOST | sed -e 's/\..*//'`
22 _cleanup()
24 if $done_clean
25 then
27 else
28 echo
29 echo "Restore pmcd.conf and restart PMCD ..."
30 if [ -f $tmp.pmcd.conf ]
31 then
32 $sudo cp $tmp.pmcd.conf $PCP_PMCDCONF_PATH
33 rm -f $tmp.pmcd.conf
35 _restore_primary_logger
36 $sudo $PCP_RC_DIR/pcp restart | _filter_pcp_start
37 rm -f $tmp.*
38 _wait_for_pmcd
39 _wait_for_pmlogger
40 done_clean=true
42 exit $status
45 $sudo rm -rf $tmp.* $seq.full
46 trap "_cleanup" 0 1 2 3 15
47 timezone=`pmprobe -v pmcd.timezone | $PCP_AWK_PROG '{print $3}'`
49 _filter_host()
51 # filter this, as we now fetch pmcd.hostname, sneakily
52 sed \
53 -e "/ value \"$REALHOST\"/d" \
54 -e "/ value \"$LOCALHOST\"/d"
57 _filter_pmval()
59 sed \
60 -e '1,/^interval:/d' \
61 -e 's/[0-9][0-9]:[0-9][0-9]:[0-9][0-9]\.[0-9][0-9][0-9]/TIMESTAMP/g' \
62 | $PCP_AWK_PROG '
63 /No values available/ { print; next }
64 0 <= $2 && $2 < 1.1 { $2 = "non-negative number, less than 1.1" }
65 { print }' \
66 | uniq
69 trap "_cleanup" 0 1 2 3 15
71 rm -f $seq.full
73 # real QA test starts here
74 PMDA_PMCD_PATH=$PCP_PMDAS_DIR/pmcd/pmda_pmcd.$DSO_SUFFIX
76 # copy the pmcd config file to restore state later.
77 cp $PCP_PMCDCONF_PATH $tmp.pmcd.conf
79 # start from a known starting point
80 $sudo $PCP_RC_DIR/pcp stop >/dev/null 2>&1
82 cat <<End-of-File >$tmp.tmp
83 # temporary for qa/$seq
84 pmcd 2 dso pmcd_init $PMDA_PMCD_PATH
85 sample 29 pipe binary $PCP_PMDAS_DIR/sample/pmdasample -d 29
86 End-of-File
87 $sudo cp $tmp.tmp $PCP_PMCDCONF_PATH
89 _writable_primary_logger
90 $sudo $PCP_RC_DIR/pcp restart | _filter_pcp_start
91 _wait_for_pmcd
92 if [ -d $PCP_LOG_DIR/pmlogger ]
93 then
94 LOGGING_DIR=$PCP_LOG_DIR/pmlogger
95 else
96 LOGGING_DIR=$PCP_LOG_DIR
98 _wait_for_pmlogger -P $LOGGING_DIR/$LOCALHOST/pmlogger.log
100 echo 'connect primary
101 log mandatory on 500 msec { pmcd.numagents sample.milliseconds }' \
102 | pmlc
104 # run for 20 seconds
105 pmval -s 40 -t 0.5 -Z "$timezone" -D fetch pmcd.numagents >$tmp.pmval 2>&1 &
107 sleep 3
109 echo "=== kill sample PMDA process ==="
110 $sudo $signal -a -s TERM pmdasample
111 pminfo -v sample >/dev/null 2>&1
112 sleep 3
114 echo "=== SIGHUP PMCD ==="
115 $sudo $signal -a -s HUP pmcd
116 sleep 3
118 echo "=== drop sample PMDA, like Remove ==="
119 cat <<End-of-File >$tmp.tmp
120 # temporary for qa/$seq
121 pmcd 2 dso pmcd_init $PMDA_PMCD_PATH
122 End-of-File
123 $sudo cp $tmp.tmp $PCP_PMCDCONF_PATH
124 $sudo $signal -a -s HUP pmcd
125 sleep 3
127 echo "=== add sample PMDA, like Install ==="
128 cat <<End-of-File >$tmp.tmp
129 # temporary for qa/$seq
130 pmcd 2 dso pmcd_init $PMDA_PMCD_PATH
131 sample 29 pipe binary $PCP_PMDAS_DIR/sample/pmdasample -d 29
132 End-of-File
133 $sudo cp $tmp.tmp $PCP_PMCDCONF_PATH
134 $sudo $signal -a -s HUP pmcd
135 sleep 3
137 wait
139 # if desperate!
140 #echo >>$seq.full
141 #cat $PCP_PMCDLOG_PATH >>$seq.full
143 echo
144 echo "Trace of observed state changes and PMDA count ..."
145 egrep '(state changes)|( value )' $tmp.pmval \
146 | _filter_host \
147 | uniq
149 echo
150 echo "primary logger ..."
151 echo 'connect primary
152 log mandatory off { pmcd.numagents sample.milliseconds }
153 flush' \
154 | pmlc
155 sleep 2
157 # if desperate!
158 #echo >>$seq.full
159 #echo "pmlogger log ..." >>$seq.full
160 #_filter_pmlogger_log <$LOGGING_DIR/$LOCALHOST/pmlogger.log >>$seq.full
162 echo "archive contents ..."
163 pmafm $LOGGING_DIR/$LOCALHOST/Latest pmdumplog >$tmp.out 2>&1
164 egrep '(<mark>)|(pmcd.numagents)' $tmp.out \
165 | _filter_pmdumplog \
166 | uniq
168 # note clip after 4 filtered lines to avoid extra values that sometimes
169 # appear due to non-determinism in pmlogger fetch samples
171 echo
172 echo "sanity check with pmval | filter ..."
173 pmafm $LOGGING_DIR/$LOCALHOST/Latest pmval -t 1 sample.milliseconds 2>&1 \
174 | _filter_pmval \
175 | sed -e 4q
177 # if desperate!
178 #echo >>$seq.full
179 #echo "unfiltered pmval live output" >>$seq.full
180 #cat $tmp.pmval >>$seq.full
182 # if desperate!
183 #echo >>$seq.full
184 #echo "unfiltered pmval archive output" >>$seq.full
185 #pmafm $LOGGING_DIR/$LOCALHOST/Latest pmval -t 1 sample.milliseconds >>$seq.full 2>&1
187 status=0
188 exit