diff options
Diffstat (limited to 'qa/051')
-rwxr-xr-x | qa/051 | 196 |
1 files changed, 196 insertions, 0 deletions
@@ -0,0 +1,196 @@ +#! /bin/sh +# PCP QA Test No. 051 +# Check pmcd access control parsing +# +# Copyright (c) 1995-2002 Silicon Graphics, Inc. All Rights Reserved. +# + +seq=`basename $0` +echo "QA output created by $seq" + +# get standard filters +. ./common.product +. ./common.filter +. ./common.check + +_get_libpcp_config +rm -f $seq.out +if $ipv6 ; then + ln $seq.out.ipv6 $seq.out || exit 1 +else + ln $seq.out.nonipv6 $seq.out || exit 1 +fi + +# get valid hostnames: $remote_1, $remote_2, etc. +# +. ./051.hosts + +# Remember that we cd into 051.work +# +signal=$PCP_BINADM_DIR/pmsignal +config=$PCP_PMCDCONF_PATH +oconfig=$config.O +log=./pmcd.log +me=`hostname` + +rm -f $here/$seq.full + +_filter_hostnames() +{ + sed \ + -e "s/$remote_1/remote-host-1/" \ + -e "s/$remote_2/remote-host-2/" \ + -e "s/$remote_3/remote-host-3/" \ + -e "s/$remote_4/remote-host-4/" \ + -e "s/$remote_5/remote-host-5/" +} + +_filter_die_log() +{ + _filter_pmcd_log <$log \ + | _filter_hostnames \ + | sed \ + -e 's/^$//' \ + -e 's/__pmGetAddrInfo/gethostbyname/g' \ + -e 's/__pmGetHostByName/gethostbyname/g' \ + -e '/Permission clash/s/for .*/for .../' \ + -e '/gethostbyname(/s/name([0-9.]*)/name(IPADDR)/' \ + -e '/gethostbyname(/s/).*/) ERROR.../' \ + -e "/host '.*':/s/host '.*'/host 'HOST'/" \ + -e '/UNIX_DOMAIN_SOCKET/d' +} + +_filter_kill_log() +{ + sleep 3 + _filter_pmcd_log <$log \ + | _filter_hostnames \ + | sed \ + -e 's/Cannot open 000000660066: No such file or directory//' \ + -e 's/^$//' \ + -e '/^00[08]:/d' \ + -e '/UNIX_DOMAIN_SOCKET/d' \ + | $PCP_AWK_PROG ' +$3 ~ /^[0-9][0-9]*$/ { $3 = "A_PID" } + { print }' + +} + +interrupt() +{ + echo "Interrupted" + rm -f $tmp.* + exit +} + +cleanup() +{ + if [ -f $oconfig ] + then + $sudo mv $oconfig $config + fi + echo "Restarting pmcd" + unset PMCD_SOCKET + $sudo $PCP_RC_DIR/pcp restart | _filter_pcp_start + _wait_for_pmcd + _wait_for_pmlogger + rm -f $tmp.* +} + +trap interrupt 1 2 3 15 +trap cleanup 0 + +# real QA test starts here + +echo "Make sure all the config files are there" +/bin/sh setup.051 > $tmp.err 2>&1 +if [ $? -ne 0 ] +then + echo "setup.051 failed:" + cat $tmp.err + exit 1 +fi + +ls 051.work/die.* +ls 051.work/kill* +cd 051.work + +echo "terminating pmcd..." +$sudo $PCP_RC_DIR/pcp stop | _filter_pcp_stop +if [ -f $config ] +then + $sudo mv $config $oconfig +else + echo "Warning: $config not found" +fi + +echo +echo "Running the scanner/parser tests (die.\*)" + +export PMCD_SOCKET=$tmp.pmcd.socket +for t in die.* +do + rm -f pmcd.log + $sudo cp $t $config + rm -f pmcd.log + echo + $PCP_ECHO_PROG $PCP_ECHO_N "$t================""$PCP_ECHO_C" + $PCP_ECHO_PROG "$t================" >>$here/$seq.full + cat $t >>$here/$seq.full + case $t + in + die.029|die.035|die.036|die.043) + echo " may dump core for IRIX 6.1 ... bug in gethostbyname()" + ;; + *) + echo + esac + if [ "X$t" = "Xdie.029" -o "X$t" = "Xdie.043" ] + then + echo "(config for $t is host-specific)" + else + _filter_hostnames <$config \ + | sed -e "s;$PCP_PMDAS_DIR;\$PCP_PMDAS_DIR;g" + fi + $PCP_PMCD_PROG -f -x /no/such/file + echo "$t logfile----------------" + echo "$t logfile----------------" >>$here/$seq.full + cat $log >>$here/$seq.full + if [ -x filter.$t ] + then + ./filter.$t <$log + else + _filter_die_log + fi + echo "$t endlog ----------------" +done + +echo +echo +echo "Running the scanner/parser tests (kill.\*)" +echo + +for t in kill.* +do + rm -f pmcd.log + $sudo cp $t $config + rm -f pmcd.log + echo "$t================" + echo "$t================" >>$here/$seq.full + cat $t >>$here/$seq.full + _filter_hostnames <$config \ + | sed -e "s;$PCP_PMDAS_DIR;\$PCP_PMDAS_DIR;g" + # Give pmcd 3 seconds to run + ((sleep 3; $signal -a -s TERM pmcd)&) >/dev/null 2>&1 + $PCP_PMCD_PROG -f + echo "$t logfile----------------" + echo "$t logfile----------------" >>$here/$seq.full + cat $log >>$here/$seq.full + if [ -x filter.$t ] + then + ./filter.$t <$log + else + _filter_kill_log + fi + echo "$t endlog ----------------" +done |