summaryrefslogtreecommitdiff
path: root/qa/512
diff options
context:
space:
mode:
Diffstat (limited to 'qa/512')
-rwxr-xr-xqa/512166
1 files changed, 166 insertions, 0 deletions
diff --git a/qa/512 b/qa/512
new file mode 100755
index 0000000..764c348
--- /dev/null
+++ b/qa/512
@@ -0,0 +1,166 @@
+#!/bin/sh
+# PCP QA Test No. 512
+# lock recursion depth for some pcp apps
+#
+# Copyright (c) 2012 Ken McDonell. All Rights Reserved.
+#
+
+# get standard filters
+. ./common.product
+. ./common.filter
+. ./common.check
+
+seq=`basename $0`
+
+rm -f $seq.out
+if [ $PCP_VER -lt 3809 ]
+then
+ ln $seq.out.1 $seq.out || exit 1
+else
+ ln $seq.out.2 $seq.out || exit 1
+fi
+
+echo "QA output created by $seq"
+
+src/check_fault_injection >/dev/null 2>&1 || \
+ _notrun "libpcp not built with fault injection & lock tracing enabled"
+
+if [ -d ../src ]
+then
+ SRC=../src
+else
+ _notrun "PCP source not found at ../src"
+fi
+
+status=0 # success is the default!
+$sudo rm -rf $tmp.* $seq.full
+trap "rm -f $tmp.*; exit \$status" 0 1 2 3 15
+
+# we need to run part of the make to get headers and libraries setup
+# in $SRC
+#
+for dir in include libpcp/src
+do
+ echo "$SRC/$dir ..." >>$seq.full
+ cd $SRC/$dir
+ if make 2>$tmp.err >>$here/$seq.full
+ then
+ cat $tmp.err >>$here/$seq.full
+ else
+ echo "Arrgh ... make failed in $SRC/$dir"
+ cat $tmp.err
+ status=1
+ exit
+ fi
+ cd $here
+done
+
+_filter()
+{
+ tee -a $seq.full \
+ | sed -n \
+ -e '/count=/s/^[^ ][^ ]* //p' \
+ | LC_COLLATE=POSIX sort \
+ | uniq
+}
+
+_pre()
+{
+ if [ ! -d $1 ]
+ then
+ echo "_pre: botch: $1 does not exist"
+ else
+ cd $1
+ make clean >/dev/null 2>&1
+ # This is a gross hack ...
+ # need to over-ride LDFLAGS from the PCP builddefs so we search for
+ # libpcp.so in the libpcp_fault directory
+ #
+ if LCFLAGS=-DPM_MULTI_THREAD_DEBUG=1 LDFLAGS="-L../../src/libpcp_fault/src" make $2 >$tmp.out 2>&1
+ then
+ mv $2 $2.debug
+ make clean >/dev/null 2>&1
+ else
+ echo "_pre: botch: make failed"
+ cat $tmp.out
+ fi
+ cd $here
+ fi
+}
+
+_post()
+{
+ if [ ! -d $1 ]
+ then
+ echo "_post: botch: $1 does not exist"
+ else
+ cd $1
+ rm -f $2.debug
+ cd $here
+ fi
+}
+
+# real QA test starts here
+export LD_PRELOAD=$PCP_LIB_DIR/libpcp_fault.so
+
+
+echo "== pminfo ==" | tee -a $seq.full
+_pre $SRC/pminfo pminfo
+$SRC/pminfo/pminfo.debug -v -Dlock >/dev/null 2>$tmp.trace
+_post $SRC/pminfo pminfo
+_filter <$tmp.trace
+
+echo | tee -a $seq.full
+echo "== pmlogger ==" | tee -a $seq.full
+sed -e 's/1 sec/50 msec/' <src/config.foo >$tmp.config
+_pre $SRC/pmlogger/src pmlogger
+$SRC/pmlogger/src/pmlogger.debug -Dlock -c $tmp.config -s 20 -l $tmp.log $tmp
+_post $SRC/pmlogger/src pmlogger
+_filter <$tmp.log
+
+echo | tee -a $seq.full
+echo "== pmlogextract ==" | tee -a $seq.full
+for arch in a b c
+do
+ for i in 0 index meta
+ do
+ cp src/foo.$i $tmp-$arch.$i
+ done
+done
+_pre $SRC/pmlogextract pmlogextract
+$SRC/pmlogextract/pmlogextract.debug -Dlock $tmp-a $tmp-b $tmp-c $tmp-out 2>$tmp.trace
+_post $SRC/pmlogextract pmlogextract
+_filter <$tmp.trace
+
+echo | tee -a $seq.full
+echo "== pmdumplog ==" | tee -a $seq.full
+_pre $SRC/pmdumplog pmdumplog
+$SRC/pmdumplog/pmdumplog.debug -a -Dlock $tmp-out >$tmp.trace 2>&1
+_post $SRC/pmdumplog pmdumplog
+_filter <$tmp.trace
+
+echo | tee -a $seq.full
+echo "== dbpmda ==" | tee -a $seq.full
+_pre $SRC/dbpmda/src dbpmda
+# based on QA 137
+$SRC/dbpmda/src/dbpmda.debug -Dlock -n $PCP_PMDAS_DIR/simple/root -ie >$tmp.trace 2>&1 <<End-of-File
+open dso $PCP_PMDAS_DIR/simple/pmda_simple.$DSO_SUFFIX simple_init 253
+getdesc on
+desc simple.numfetch
+fetch simple.numfetch
+desc simple.color
+fetch simple.color
+instance 253.0
+open pipe $PCP_PMDAS_DIR/simple/pmdasimple -d 253
+desc simple.numfetch
+fetch simple.numfetch
+desc simple.color
+fetch simple.color
+instance 253.0
+End-of-File
+_post $SRC/dbpmda/src dbpmda
+_filter <$tmp.trace
+
+
+# success, all done
+exit