/var/lib/pcp/testsuite/1055 is in pcp-testsuite 4.0.1-1.
This file is owned by root:root, with mode 0o755.
The actual contents of the file can be viewed below.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 | #! /bin/sh
# PCP QA Test No. 1055
# Check PMCD state change notification, aka PMCD_ADD_AGENT
#
# Copyright (c) 2016 Red Hat, Inc.
#
seq=`basename $0`
echo "QA output created by $seq"
# get standard filters
. ./common.product
. ./common.filter
. ./common.check
signal=$PCP_BINADM_DIR/pmsignal
status=1
done_clean=false
LOCALHOST=`hostname`
_cleanup()
{
if $done_clean
then
:
else
echo "Restore pmcd.conf and restart PMCD ..."
if [ -f $tmp.pmcd.conf ]
then
$sudo cp $tmp.pmcd.conf $PCP_PMCDCONF_PATH
rm -f $tmp.pmcd.conf
fi
_restore_primary_logger
_service pcp restart \
| _filter_pcp_start \
| sed -e '/pmlogger not running/d'
_wait_for_pmcd
_wait_for_pmlogger
done_clean=true
fi
$sudo rm -f $tmp.*
exit $status
}
$sudo rm -rf $tmp.* $seq.full
trap "_cleanup" 0 1 2 3 15
# real QA test starts here
PMDA_PMCD_PATH=$PCP_PMDAS_DIR/pmcd/pmda_pmcd.$DSO_SUFFIX
# copy the pmcd config file to restore state later.
cp $PCP_PMCDCONF_PATH $tmp.pmcd.conf
# start from a known starting point
_service pcp stop >/dev/null 2>&1
cat <<End-of-File >$tmp.tmp
# temporary for qa/$seq
pmcd 2 dso pmcd_init $PMDA_PMCD_PATH
sample 29 pipe binary $PCP_PMDAS_DIR/sample/pmdasample -d 29
simple 253 pipe binary /var/lib/pcp/pmdas/simple/pmdasimple -d 253
End-of-File
$sudo cp $tmp.tmp $PCP_PMCDCONF_PATH
_writable_primary_logger
_service pcp restart | _filter_pcp_start
_wait_for_pmcd
if [ -d $PCP_LOG_DIR/pmlogger ]
then
LOGGING_DIR=$PCP_LOG_DIR/pmlogger
else
LOGGING_DIR=$PCP_LOG_DIR
fi
_wait_for_pmlogger -P $LOGGING_DIR/$LOCALHOST/pmlogger.log
# Reset pmlogger
echo "log sample.dynamic.meta.metric"
# Log the sample pmda's sample.dynamic.meta.metric
echo 'connect primary
log mandatory on 500 msec { sample.dynamic.meta.metric }' \
| pmlc
# log a few samples
sleep 2
echo "archive contents before pmda simple restart..."
echo "expect no <mark> record"
echo "---------------------------------------------------------------"
pmafm $LOGGING_DIR/$LOCALHOST/Latest pmdumplog >$tmp.out 2>&1
egrep '(<mark>)|(sample.dynamic.meta.metric)' $tmp.out \
| _filter_pmdumplog \
| uniq
echo "---------------------------------------------------------------"
# Get the type of sample.dynamic.meta.metric by fetching
# sample.dynamic.meta.pmdesc.type using pminfo.
echo "pminfo -f sample.dynamic.meta.pmdesc.type" | tee -a $seq.full
type=`pminfo -f sample.dynamic.meta.pmdesc.type | tee -a $seq.full \
| awk '/value/ { print $2 }'`
# Change the type of sample.dynamic.meta.metric by using pmstore to store into
# sample.dynamic.meta.pmdesc.type
echo "changing type from $type to $((type + 1))"
pmstore sample.dynamic.meta.pmdesc.type $((type + 1))
# Restart the simple pmda by killing it and the getting pmcd to restart it (HUP).
# pmlogger should receive PMCD_ADD_AGENT, which should cause it to re-check
# all of it's configured metrics. It should then flag the change to
# sample.dynamic.meta.pmdesc.type and exit.
echo "restart the simple pmda"
$sudo $signal -a -s TERM pmdasimple
sleep 1 # let the signal arrive and let pmdasimple exit
$sudo $signal -a -s HUP pmcd # ensure pmcd restarts the PMDA
sleep 1 # let the signal arrive and pmcd think about it
echo "archive contents after pmda simple restart..."
echo "expect no <mark> record"
echo "---------------------------------------------------------------"
pmafm $LOGGING_DIR/$LOCALHOST/Latest pmdumplog >$tmp.out 2>&1
egrep '(<mark>)|(sample.dynamic.meta.metric)' $tmp.out \
| _filter_pmdumplog \
| uniq
echo "---------------------------------------------------------------"
# pmlogger should have stopped. Check for the messages indicating that
# the re-check of the configured metrics failed and that it stopped.
echo >>$seq.full
echo "pmlogger log ..." >>$seq.full
cat $LOGGING_DIR/$LOCALHOST/pmlogger.log | tee -a $seq.full | \
grep \
-e 'Type of metric "sample.dynamic.meta.metric" has changed from 32 to U32' \
-e 'One or more configured metrics have changed after pmcd state change. Exiting'
status=0
exit
|