summaryrefslogtreecommitdiff
path: root/qa/295
diff options
context:
space:
mode:
Diffstat (limited to 'qa/295')
-rwxr-xr-xqa/29597
1 files changed, 97 insertions, 0 deletions
diff --git a/qa/295 b/qa/295
new file mode 100755
index 0000000..8d398b6
--- /dev/null
+++ b/qa/295
@@ -0,0 +1,97 @@
+#! /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