summaryrefslogtreecommitdiff
path: root/qa/365
diff options
context:
space:
mode:
authorIgor Pashev <pashev.igor@gmail.com>2014-10-26 12:33:50 +0400
committerIgor Pashev <pashev.igor@gmail.com>2014-10-26 12:33:50 +0400
commit47e6e7c84f008a53061e661f31ae96629bc694ef (patch)
tree648a07f3b5b9d67ce19b0fd72e8caa1175c98f1a /qa/365
downloadpcp-47e6e7c84f008a53061e661f31ae96629bc694ef.tar.gz
Debian 3.9.10debian/3.9.10debian
Diffstat (limited to 'qa/365')
-rwxr-xr-xqa/365170
1 files changed, 170 insertions, 0 deletions
diff --git a/qa/365 b/qa/365
new file mode 100755
index 0000000..7400dc0
--- /dev/null
+++ b/qa/365
@@ -0,0 +1,170 @@
+#!/bin/sh
+# PCP QA Test No. 365
+# Errors in pmcd.conf [acccess] that should not prevent pmcd starting
+#
+# 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.check
+. ./common.filter
+. ./localconfig
+
+rm -f $seq.out
+_get_libpcp_config
+if $ipv6 ; then
+ ln $seq.out.ipv6 $seq.out || exit 1
+else
+ ln $seq.out.nonipv6 $seq.out || exit 1
+fi
+
+qahost=`hostname`
+eval `./getpmcdhosts -L -n 2 2>$tmp.out | sed -e 's/^/other1=/' -e 's/ / other2=/'`
+echo "other1=$other1" >$seq.full
+echo "other2=$other2" >>$seq.full
+echo "qahost=$qahost" >>$seq.full
+[ -z "$other1" ] && _notrun "Cannot find first remote host running pmcd"
+[ -z "$other2" ] && _notrun "Cannot find second remote host running pmcd"
+
+status=1
+done_clean=false
+rm -f $seq.full
+
+_cleanup()
+{
+ if $done_clean
+ then
+ :
+ else
+ [ -f $tmp.pmcd.conf ] && $sudo mv $tmp.pmcd.conf $PCP_PMCDCONF_PATH
+ rm -f $tmp.*
+ $sudo $PCP_RC_DIR/pcp restart | _filter_pcp_start
+ _wait_for_pmcd
+ _wait_for_pmlogger
+ done_clean=true
+ fi
+ exit $status
+}
+
+trap "_cleanup" 0 1 2 3 15
+
+# real QA test starts here
+home=$PCP_PMDAS_DIR
+
+# copy the pmcd config file to restore state later.
+cp $PCP_PMCDCONF_PATH $tmp.pmcd.conf
+
+if [ $PCP_PLATFORM = linux ]
+then
+ cat <<End-of-File >$tmp.tmp
+# from qa/$seq
+#
+linux 60 dso linux_init $PCP_PMDAS_DIR/linux/pmda_linux.so
+pmcd 2 dso pmcd_init $PCP_PMDAS_DIR/pmcd/pmda_pmcd.so
+
+End-of-File
+elif [ $PCP_PLATFORM = irix ]
+then
+ cat <<End-of-File >$tmp.tmp
+# from qa/$seq
+#
+irix 1 dso irix_init libirixpmda.so
+pmcd 2 dso pmcd_init pmda_pmcd.so
+proc 3 dso proc_init pmda_proc.so
+
+End-of-File
+elif [ $PCP_PLATFORM = darwin ]
+then
+ cat <<End-of-File >$tmp.tmp
+# from qa/$seq
+#
+darwin 78 dso darwin_init $PCP_PMDAS_DIR/darwin/pmda_darwin.dylib
+pmcd 2 dso pmcd_init $PCP_PMDAS_DIR/pmcd/pmda_pmcd.dylib
+
+End-of-File
+elif [ $PCP_PLATFORM = solaris ]
+then
+ cat <<End-of-File >$tmp.tmp
+# from qa/$seq
+#
+solaris 75 dso solaris_init $PCP_PMDAS_DIR/solaris/pmda_solaris.so
+pmcd 2 dso pmcd_init $PCP_PMDAS_DIR/pmcd/pmda_pmcd.so
+
+End-of-File
+else
+ echo "Arrgh ... need pmcd.conf for $PCP_PLATFORM"
+ exit 1
+fi
+
+cat <<End-of-File >>$tmp.tmp
+
+[access]
+allow not.a.real.host : all;
+allow nohost.engr.sgi.com, $qahost : all;
+allow $other1, not.a.real.host, localhost : fetch;
+allow localhost, $other2, nohost.melbourne.sgi.com : store;
+allow "local:" , "unix:" : all;
+End-of-File
+
+echo >> $tmp.tmp
+echo "# from qa/$seq" >> $tmp.tmp
+
+$sudo cp $tmp.tmp $PCP_PMCDCONF_PATH
+echo >>$seq.full
+echo "=== pmcd.conf ===" >>$seq.full
+cat $PCP_PMCDCONF_PATH >>$seq.full
+
+$sudo $PCP_RC_DIR/pcp restart | _filter_pcp_start
+_wait_for_pmcd
+
+cat $PCP_PMCDLOG_PATH >>$seq.full
+echo >>$seq.full
+echo "=== pmcd.log ===" >>$seq.full
+_filter_pmcd_log <$PCP_PMCDLOG_PATH \
+| sed \
+ -e '/^linux/{
+s/ [12] dso/1-or-2 dso/
+s/lib=\/usr\//lib=\/usr-or-var\//
+s/lib=\/var\//lib=\/usr-or-var\//
+}' \
+ -e 's/__pmGetAddrInfo/gethostbyname/g' \
+ -e 's/__pmGetHostByName/gethostbyname/g' \
+ -e '/gethostbyname(/s/ Unknown host/ No address associated with name/' \
+ -e '/gethostbyname(/s/ Host name lookup failure/ No address associated with name/' \
+ -e '/gethostbyname(/s/ Resolver Error 0 (no error)/ No address associated with name/' \
+ -e "/$qahost\$/"'{
+s/ [0-9][0-9]*\.[0-9][0-9]*\.[0-9][0-9]*\.[0-9][0-9]* / LOCALIP /
+s/ */ /g
+}' \
+ -e "/$other1\$/"'{
+s/ [0-9][0-9]*\.[0-9][0-9]*\.[0-9][0-9]*\.[0-9][0-9]* / OTHERIP1 /
+s/ */ /g
+}' \
+ -e "/$other2\$/"'{
+s/ [0-9][0-9]*\.[0-9][0-9]*\.[0-9][0-9]*\.[0-9][0-9]* / OTHERIP2 /
+s/ */ /g
+}' \
+ -e "s/$qahost\$/LOCALHOST/g" \
+ -e "s/$other1\$/OTHERHOST1/g" \
+ -e "s/$other2\$/OTHERHOST2/g" \
+ -e '/UNIX_DOMAIN_SOCKET/d' \
+ -e '/1 unix:$/d' \
+ -e '/error sending Conn ACK PDU/d' \
+ -e "s/[0-9a-f][0-9a-f][0-9a-f][0-9a-f][0-9a-f][0-9a-f][0-9a-f][0-9a-f]/<hexnum>/" \
+ | $PCP_AWK_PROG '
+$8 ~ /^[A-Z]+HOST[12]*$/ && $5 ~ /^[0-9a-f]/ {
+ sub(/^[0-9][0-9]*\.[0-9][0-9]*\.[0-9][0-9]*\.[0-9][0-9]*$/,"<ipaddr>",$5)
+ sub(/^[0-9a-f:][0-9a-f:]*%[0-9a-z]+$/,"<ipaddr>",$5)
+ sub(/^[0-9a-f:][0-9a-f:]*$/,"<ipaddr>",$5)
+ }
+ { print }'
+
+echo "check pmcd is up and we can get local access" >> $seq.full
+pmprobe hinv.ncpu >>$seq.full 2>&1 || echo "ACCESS DENIED"
+
+status=0
+exit