#!/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/' $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 <