#! /bin/sh # PCP QA Test No. 295 # verify pmproxy cleans up correctly when clients are terminated # # Copyright (c) 2005 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 which pmproxy >/dev/null 2>&1 || _notrun "No pmproxy binary installed" rm -f $seq.out if [ $PCP_VER -ge 3806 ] then ln $seq.out.2 $seq.out else ln $seq.out.1 $seq.out fi signal=$PCP_BINADM_DIR/pmsignal status=0 # success is the default! username=`id -u -n` $sudo rm -rf $tmp.* trap "_cleanup; rm -f $tmp.*; exit \$status" 0 1 2 3 15 _cleanup() { $sudo $signal -a pmproxy >/dev/null 2>&1 $sudo $PCP_RC_DIR/pmproxy restart >/dev/null 2>&1 } _filter_pmproxy() { sed \ -e '/^__pmSetSocketIPC: fd=/d' \ -e '/^__pmSetDataIPC:/d' \ -e '/^__pmDataIPC: /d' \ -e '/^IPC table fd/d' \ } _check() { echo "`grep AcceptNewClient $tmp.log | wc -l | sed -e 's/ *//g'` connects" echo "`grep DeleteClient $tmp.log | wc -l | sed -e 's/ *//g'` disconnects" } $sudo $PCP_RC_DIR/pmproxy stop >/dev/null 2>&1 $sudo $signal -a pmproxy >/dev/null 2>&1 proxyargs="-Dcontext" id pcp >/dev/null 2>&1 && proxyargs="$proxyargs -U $username" $PCP_BINADM_DIR/pmproxy $proxyargs -l $tmp.log 2>&1 | _filter_pmproxy PMPROXY_HOST=localhost export PMPROXY_HOST # real QA test starts here pidlist=`sh -c "pmval -h $PMPROXY_HOST hinv.ncpu >$tmp.1 2>&1 & echo \\\$!"` pid=`sh -c "pmstat -h $PMPROXY_HOST >$tmp.2 2>&1 & echo \\\$!"` pidlist="$pidlist $pid" echo "kernel.all.load;" >$tmp.in pid=`sh -c "pmie -v -h $PMPROXY_HOST -c $tmp.in >$tmp.3 2>&1 & echo \\\$!"` pidlist="$pidlist $pid" sleep 3 echo all clients started echo "expect 4 connects and 1 disconnect, thanks to pmie" _check for pid in $pidlist do echo echo "kill off a client ..." $signal -s KILL $pid sleep 1 _check done echo "pmval output ..." >$seq.full cat $tmp.1 >>$seq.full echo >>$seq.full echo "pmstat output ..." >>$seq.full cat $tmp.2 >>$seq.full echo >>$seq.full echo "pmie output ..." >>$seq.full cat $tmp.3 >>$seq.full # success, all done exit