summaryrefslogtreecommitdiff
path: root/qa/051
diff options
context:
space:
mode:
Diffstat (limited to 'qa/051')
-rwxr-xr-xqa/051196
1 files changed, 196 insertions, 0 deletions
diff --git a/qa/051 b/qa/051
new file mode 100755
index 0000000..6c1de2e
--- /dev/null
+++ b/qa/051
@@ -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