summaryrefslogtreecommitdiff
path: root/qa/022
diff options
context:
space:
mode:
Diffstat (limited to 'qa/022')
-rwxr-xr-xqa/022145
1 files changed, 145 insertions, 0 deletions
diff --git a/qa/022 b/qa/022
new file mode 100755
index 0000000..1755c81
--- /dev/null
+++ b/qa/022
@@ -0,0 +1,145 @@
+#! /bin/sh
+# PCP QA Test No. 022
+# proc PMDA exerciser
+#
+# Copyright (c) 2013-2014 Red Hat.
+# 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
+
+pminfo proc.nprocs >/dev/null 2>&1 || _notrun "proc PMDA not installed"
+
+# see if unix domain sockets are available (permissions)
+_get_libpcp_config
+target="-h localhost"
+$unix_domain_sockets && target="-h unix:"
+
+rm -f $seq.out $seq.full
+test -f $seq.out.$PCP_PLATFORM || _notrun "No validated output for $PCP_PLATFORM"
+ln $seq.out.$PCP_PLATFORM $seq.out
+
+trap "rm -f $tmp.*; exit" 0 1 2 3 15
+
+_filter_pmids()
+{
+ sed \
+ -e 's/indom=[0-9][0-9]* \[/indom=INDOM [/g' \
+ -e 's/3\.[0-9][0-9]*\.[0-9][0-9]*/PMID/g' \
+ -e 's/\[3\.9]/[INDOM]/g' \
+ -e 's/60\.[0-9][0-9]*\.[0-9][0-9]*/PMID/g' \
+ -e 's/\[60\.9]/[INDOM]/g'
+}
+
+_proc_filter()
+{
+ input=$1
+
+ # Set variables pid, ppid, cpid for process ids
+ eval `grep '^pid=' $input`
+ eval `grep '^cpid=' $input`
+
+ sed < $input \
+ -e '/proc.memory.*.txt/s/valfmt: [01]/valfmt: 0-or-1/' \
+ -e '/proc\.psinfo\.[us]time/s/valfmt: [01]/valfmt: 0-or-1/' \
+ -e '/unknown pid/d' \
+ -e 's/^/ /' \
+ -e 's/$/ /' \
+ -e "s/\([^0-9]\)0*$pid\([^0-9]\)/\1PID\2/g" \
+ -e "s/\([^0-9]\)0*$ppid\([^0-9]\)/\1PPID\2/g" \
+ -e "s/\([^0-9]\)0*$cpid\([^0-9]\)/\1CPID\2/g" \
+ -e "s,$PCP_RUN_DIR/pmcd.socket,localhost," \
+ -e 's/^ //' \
+ -e 's/ $//' \
+ -e 's/fd=[0-9][0-9]*/fd=N/g' \
+ -e 's/refcnt=[0-9]/refcnt=N/g' \
+ -e 's/inst \[.*\] value/inst [NNN] value/' \
+ -e '/value /{
+ s/value [0-9][0-9]*/value INTEGER/
+ s/value ".*"/value STRING/
+ s/value \[.*\]/value BINARYDATA/
+ }' \
+ -e '/pmResult/s/ .* numpmid/ ... numpmid/' \
+ \
+ | $PCP_AWK_PROG '
+ /End Fetch Over Entire Instance Domain/ { all = 0; print; next; }
+ /Fetch Over Entire Instance Domain/ { all = 1 }
+ all == 1 && / inst \[/ { next }
+ all == 1 && /] value / { next }
+ all == 1 && $3 == "numval:" { $4 = "LOTS" }
+ { print }' \
+ | _filter_pmids
+
+}
+
+# real QA test starts here
+
+echo "=== pminfo -F output ===" >$seq.full
+
+# try fetching all proc metrics
+# cull out the not supported msg component
+pminfo $target -F proc \
+| tee -a $seq.full \
+| _inst_value_filter \
+| sed -e '/value/d' \
+ -e '/not supported/d' \
+ -e '/instance identifier/d' \
+ -e '/^[ \t]*$/d' \
+ -e '/DISAPPEARED/d' \
+ -e '/^proc\.fd\.count$/d'
+
+src/proc_test $target \
+ proc.psinfo.utime \
+ proc.psinfo.stime \
+ proc.memory.rss \
+ proc.memory.size \
+ > $tmp.out 2>&1
+code=$?
+
+echo >>$seq.full
+echo "=== src/proc_test output ===" >>$seq.full
+cat $tmp.out >>$seq.full
+
+_proc_filter $tmp.out
+
+if [ $code != 0 ]
+then
+ echo $0: FAILED proc_test exit status = $code
+ echo $0: see $seq.full
+ exit 1
+fi
+
+#
+# fetch all instances for one metric in each cluster
+# if new clusters are added, add more here
+#
+echo ""
+echo "All instances for selected metrics ..."
+pminfo $target -F 2>$tmp.err \
+ proc.nprocs \
+ proc.psinfo.sname \
+ proc.memory.textrss \
+ proc.runq.sleeping \
+| sed \
+ -e '/Error: proc_instance: unknown pid:/d' \
+ -e '/^ *value /d' \
+ -e '/^ *inst /d' \
+ -e '/^"] value/d'
+
+sed -e '/unknown pid/d' $tmp.err > $tmp.err1
+
+if [ -s $tmp.err1 ]
+then
+ echo Following is unexpected stderr output from pminfo \| sed
+ echo "--------"
+ cat $tmp.err1
+ echo "--------"
+fi
+
+exit 0