summaryrefslogtreecommitdiff
path: root/qa/572
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/572
downloadpcp-47e6e7c84f008a53061e661f31ae96629bc694ef.tar.gz
Debian 3.9.10debian/3.9.10debian
Diffstat (limited to 'qa/572')
-rwxr-xr-xqa/572145
1 files changed, 145 insertions, 0 deletions
diff --git a/qa/572 b/qa/572
new file mode 100755
index 0000000..46f2be8
--- /dev/null
+++ b/qa/572
@@ -0,0 +1,145 @@
+#! /bin/sh
+# PCP QA Test No. 572
+# pmcd agent table relocation and libpcp_pmda botch for PMDA_INTERFACE_3.
+# linux PMDA returns no values after weblog Install was the original
+# observation.
+#
+# Copyright (c) 1995-2002 Silicon Graphics, Inc. All Rights Reserved.
+#
+
+seq=`basename $0`
+echo "QA output created by $seq"
+
+# get standard environment, filters and checks
+. ./common.product
+. ./common.filter
+. ./common.check
+
+pmcdconf=$PCP_PMCDCONF_PATH
+rootconf=$PCP_VAR_DIR/pmns/root
+needclean=false
+
+unset ROOT TOOLROOT MAKEFLAGS
+
+_cleanup()
+{
+ if $needclean
+ then
+ [ -f $tmp.pmcd.bak ] && $sudo cp $tmp.pmcd.bak $pmcdconf
+ [ -f $tmp.root.bak ] && $sudo cp $tmp.root.bak $rootconf
+ $sudo $PCP_RC_DIR/pcp restart | _filter_pcp_start
+ $sudo rm -f $tmp.*
+ needclean=false
+ fi
+}
+
+_filter_make()
+{
+ sed \
+ -e '/In function .vpmprintf./d' \
+ -e '/warning: the use of .tempnam./d' \
+ -e '/make: Nothing to be done/d'
+}
+
+status=1 # failure is the default!
+trap "_cleanup; exit \$status" 0 1 2 3 15
+
+# create a basic pmcd config file
+if [ $PCP_PLATFORM = linux -o $PCP_PLATFORM = solaris ]
+then
+cat >$tmp.pmcd.conf << EOF
+# from QA $seq
+pmcd 2 dso pmcd_init $PCP_PMDAS_DIR/pmcd/pmda_pmcd.so
+EOF
+elif [ $PCP_PLATFORM = irix ]
+then
+cat >$tmp.pmcd.conf << EOF
+# from QA $seq
+pmcd 2 dso pmcd_init pmda_pmcd.so
+EOF
+elif [ $PCP_PLATFORM = darwin ]
+then
+cat >$tmp.pmcd.conf << EOF
+# from QA $seq
+pmcd 2 dso pmcd_init $PCP_PMDAS_DIR/pmcd/pmda_pmcd.dylib
+EOF
+else
+ echo "Arrgh ... need pmcd.conf for $PCP_PLATFORM"
+ exit 1
+fi
+
+# create my pmns
+cat <<End-of-File >$tmp.pmns
+root {
+ pmcd
+ sample
+ trivial
+ simple
+}
+pmcd {
+ numagents 2:0:2
+}
+sample {
+ string
+}
+sample.string {
+ write_me 29:0:32
+}
+trivial {
+ time 250:0:0
+}
+simple {
+ numfetch 253:0:0
+}
+End-of-File
+
+# real QA test starts here
+cp $pmcdconf $tmp.pmcd.bak
+cp $rootconf $tmp.root.bak
+
+needclean=true
+$sudo cp $tmp.pmcd.conf $pmcdconf
+$sudo $PCP_RC_DIR/pcp restart | _filter_pcp_start
+
+for pmda in '' sample trivial simple
+do
+ echo
+ if [ ! -z "$pmda" ]
+ then
+ echo "=== $pmda PMDA ==="
+ cd $PCP_PMDAS_DIR/$pmda
+ $sudo ./Install </dev/null >/dev/null 2> $tmp.stderr
+ # strip blank lines from stderr
+ # strip cc warning messages (assumed to be 4 non-blanks long)
+ cat $tmp.stderr | _filter_make | \
+ $PCP_AWK_PROG '
+ /^ *$/ {
+ next
+ }
+ /^cc-.*cc: WARNING/ {
+ getline ; getline ; getline ; getline
+ next
+ }
+ {
+ print
+ }
+ '
+ fi
+ pmstore -n $tmp.pmns sample.string.write_me "$pmda"
+ pminfo -n $tmp.pmns -f \
+ pmcd.numagents \
+ sample.string.write_me \
+ trivial.time \
+ simple.numfetch \
+ | $PCP_AWK_PROG '
+mask == 1 { if ($1 == "value") $2 = "NUMBER"
+ mask = 0
+ }
+ { print }
+/pmcd.numagents/ && "'"$pmda"'" == "" { mask = 1 }
+/trivial.time$/ { mask = 1 }'
+
+done
+
+status=0
+exit