/var/lib/pcp/testsuite/1196 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 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178 179 180 181 182 | #!/bin/sh
# PCP QA Test No. 1096
# Exercise tigher checks for domain/name matching in pmdaproc.sh
# for PMDA Install/Remove operations
#
# Copyright (c) 2017 Ken McDonell. All Rights Reserved.
#
seq=`basename $0`
echo "QA output created by $seq"
# get standard environment, filters and checks
. ./common.product
. ./common.filter
. ./common.check
_cleanup()
{
if $done_clean
then
:
else
# need to Remove whack to cleanse the PMNS
#
cd ..
[ -d sample ] && mv sample whacko
cd whacko
$sudo ./Remove 2>&1 | _filter_cull
rm -f domain.h pmdawhacko help.pag help.dir
# put pmcd.conf back
#
_restore_config $PCP_PMCDCONF_PATH
_service pcp restart | _filter_pcp_start
_wait_for_pmcd
_wait_for_pmlogger
# reinstall the sample PMDA ... the PMNS will have been trashed
#
cd $PCP_VAR_DIR/pmdas/sample
sudo ./Install </dev/null >>$here/$seq.full
done_clean=true
fi
cd $here
$sudo rm -rf $tmp $tmp.*
exit $status
}
_fixup()
{
$sudo cp $PCP_PMCDCONF_PATH.$seq $PCP_PMCDCONF_PATH
_service pmcd restart | _filter_pcp_start
_wait_for_pmcd
}
status=1 # failure is the default!
$sudo rm -rf $tmp $tmp.* $seq.full
trap "_cleanup; exit \$status" 0 1 2 3 15
done_clean=false
_save_config $PCP_PMCDCONF_PATH
_filter()
{
sed \
-e '/value/s/[0-9][0-9]*/NUMBER/' \
# end
}
# Handle lines like ...
# Warning: /etc/pcp/pmcd/pmcd.conf[7] culling entry ...
# and this one where the quoting may differ from one platform to the next
# make: Nothing to be done for 'install'.
# make: Nothing to be done for 'install'.
# gmake: Nothing to be done for `install'.
#
_filter_cull()
{
sed \
-e '/Warning:/{
s@'"$PCP_PMCDCONF_PATH"'@PCP_PMCDCONF_PATH@
s/\[[0-9][0-9]*]/[N]/
}' \
-e 's/^gmake:/make:/' \
-e "/Nothing to be done/s/.install./'install'/" \
# end
}
if mkdir -p $tmp/pmdas/whacko
then
:
else
echo "Arrgh: cannot mkdir $tmp/pmdas/whacko"
ls -ld $tmp
exit
fi
cp pmdas/whacko/* $tmp/pmdas/whacko
cd $tmp/pmdas/whacko
if [ -f GNUmakefile.install ]
then
# running from a git tree, not the testsuite directory, so use
# the installed makefile that does nothing
#
mv GNUmakefile.install GNUmakefile
fi
# we need the trivial PMDA ... the "whacko" PMDA uses this executable
#
if [ ! -x $PCP_VAR_DIR/pmdas/trivial/pmdatrivial ]
then
( cd $PCP_VAR_DIR/pmdas/trivial; $sudo make pmdatrivial ) >>$here/$seq.full
if [ ! -x $PCP_VAR_DIR/pmdas/trivial/pmdatrivial ]
then
echo "Arrgh: cannot make $PCP_VAR_DIR/pmdas/pmdatrivial"
exit
fi
fi
# Now copy the trivial PMDA executable here
#
rm -f pmdawhacko
cp $PCP_VAR_DIR/pmdas/trivial/pmdatrivial pmdawhacko
# real QA test starts here
# borrow ../schizo's domain
#
echo '#define WHACKO 241' >domain.h
( echo "--- initial state"; cat $PCP_PMCDCONF_PATH ) >>$here/$seq.full
echo "=== no-error case ===" | tee -a $here/$seq.full
$sudo ./Install </dev/null 2>&1 | _filter_cull
( echo "--- after Install"; cat $PCP_PMCDCONF_PATH ) >>$here/$seq.full
pminfo -mf whacko | _filter
pminfo -f pmcd.agent.status | egrep 'whacko|sample'
$sudo ./Remove 2>&1 | _filter_cull
( echo "--- after Remove"; cat $PCP_PMCDCONF_PATH ) >>$here/$seq.full
pminfo -mf whacko | _filter
pminfo -f pmcd.agent.status | egrep 'whacko|sample'
echo | tee -a $here/$seq.full
echo "=== domain number clash case ... will clobber and remove sample PMDA ===" | tee -a $here/$seq.full
# borrow sample PMDA's domain
echo '#define WHACKO 29' >domain.h
$sudo ./Install </dev/null 2>&1 | _filter_cull
( echo "--- after Install"; cat $PCP_PMCDCONF_PATH ) >>$here/$seq.full
pminfo -mf whacko | _filter
pminfo -f pmcd.agent.status | egrep 'whacko|sample'
$sudo ./Remove 2>&1 | _filter_cull
( echo "--- after Remove"; cat $PCP_PMCDCONF_PATH ) >>$here/$seq.full
pminfo -mf whacko | _filter
pminfo -f pmcd.agent.status | egrep 'whacko|sample'
# Reinstate pmcd.conf and reinstall the sample PMDA ... the PMNS will
# have been trashed, so putting pmcd.conf is not enough.
# Note we have to do this again after the next test (before exiting)
# in _cleanup()
#
_fixup >>$here/$seq.full
( cd $PCP_VAR_DIR/pmdas/sample; $sudo ./Install </dev/null ) >>$here/$seq.full
# for this one, we need the parent directory to be called sample, not
# whacko to dodge a check in pmdaproc.sh
#
cd ..
mv whacko sample
cd sample
echo | tee -a $here/$seq.full
echo "=== domain name clash case ... will clobber and remove sample PMDA ===" | tee -a $here/$seq.full
# borrow ../schizo's domain again
#
echo '#define WHACKO 241' >domain.h
$sudo sh -c "iam=sample ./Install" </dev/null 2>&1 | _filter_cull
( echo "--- after Install"; cat $PCP_PMCDCONF_PATH ) >>$here/$seq.full
pminfo -mf whacko | _filter
pminfo -f pmcd.agent.status | egrep 'whacko|sample'
$sudo sh -c "iam=sample ./Remove" 2>&1 | _filter_cull
( echo "--- after Remove"; cat $PCP_PMCDCONF_PATH ) >>$here/$seq.full
pminfo -mf whacko | _filter
pminfo -f pmcd.agent.status | egrep 'whacko|sample'
# success, all done
status=0
exit
|