diff options
author | Igor Pashev <pashev.igor@gmail.com> | 2014-10-26 12:33:50 +0400 |
---|---|---|
committer | Igor Pashev <pashev.igor@gmail.com> | 2014-10-26 12:33:50 +0400 |
commit | 47e6e7c84f008a53061e661f31ae96629bc694ef (patch) | |
tree | 648a07f3b5b9d67ce19b0fd72e8caa1175c98f1a /qa/504 | |
download | pcp-debian.tar.gz |
Debian 3.9.10debian/3.9.10debian
Diffstat (limited to 'qa/504')
-rwxr-xr-x | qa/504 | 173 |
1 files changed, 173 insertions, 0 deletions
@@ -0,0 +1,173 @@ +#! /bin/sh +# PCP QA Test No. 504 +# exercises pmie_check functionality +# Version of No. 115 ... this one uses pmsocks +# +# Copyright (c) 1995-2002 Silicon Graphics, Inc. All Rights Reserved. +# + +# get standard filters +. ./common.product +. ./common.filter +. ./common.check + +seq=`basename $0` + +rm -f $seq.out +if [ $PCP_VER -lt 3810 ] +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" + +if [ "`pmsocks echo ok 2>&1`" != ok ] +then + echo "pmsocks is not installed and/or not configured" >$seq.notrun + echo "$seq: [not run] `cat $seq.notrun`" + exit 0 +fi + +# get standard filters +. ./common.product +. ./common.check +. ./common.filter +. ./common.config + +# Requires common.product: +if [ "$PCP_VER" -lt 2200 ] +then + echo "test aborted; known problem with pmsocks (#816862)" >$seq.notrun + echo "$seq: [not run] `cat $seq.notrun`" + exit 0 +fi + +signal=$PCP_BINADM_DIR/pmsignal +lhost=`hostname` +host=`_get_fqdn` +remote=`./getpmcdhosts -n 1 -L 2>/dev/null` +if [ -z "$PCP_PMIECONTROL_PATH" ] +then + echo "Arrgh: Botch: PCP_PMIECONTROL_PATH not defined" + exit 1 +fi +needclean=false + +_cleanup() +{ + if $needclean + then + $sudo cp $tmp.control.bak $PCP_PMIECONTROL_PATH + $sudo chown pcp:pcp $PCP_PMIECONTROL_PATH + $sudo chmod 664 $PCP_PMIECONTROL_PATH + $sudo cp $tmp.pmcd.bak $PCP_PMCDCONF_PATH + needclean=false + fi + $sudo rm -f $tmp.* +} + +status=1 # failure is the default! +trap "_cleanup; exit \$status" 0 1 2 3 15 + +_filter() +{ + sed \ + -e "s/$seq-$$/PID/g" \ + -e "s/$$/PID/g" \ + -e "s/$remote/REMOTEHOST/g" \ + -e "s/$host/LOCALHOST/g" \ + -e "s/$lhost/LOCALHOST/g" \ + -e "s/local:/LOCALHOST/g" \ + +} + +_count_pmies() +{ + count=0 + if [ -d $PCP_TMP_DIR/pmie ] + then cd $PCP_TMP_DIR/pmie + else return 0 + fi + + plist=`ls -1` + cd $here + + for process in $plist + do + ps -p $process >/dev/null 2>&1 + if [ $? = 1 ] + then + echo "urk, $PCP_TMP_DIR/pmie/$process has no running pmie instance" + else + count=`expr $count + 1` + fi + done + + return $count +} + +# create a basic pmcd config file +cat >$tmp.pmcd.conf << EOF +# from QA $seq +irix 1 dso irix_init libirixpmda.so +pmcd 2 dso pmcd_init pmda_pmcd.so +proc 3 dso proc_init pmda_proc.so +EOF + +# create a pmie config file +cat >$tmp.conf << EOF +foo = sample.long.one; +doo = sample.long.ten; +EOF + +# create pmie control file +cat >$tmp.control << EOF +\$version=1.0 +LOCALHOSTNAME y $tmp.log0 $tmp.conf +$remote n $tmp.log1 -c $tmp.conf +$remote y $tmp.log2 -c $tmp.conf +EOF + +# real QA test starts here +cp $PCP_PMIECONTROL_PATH $tmp.control.bak +cp $PCP_PMCDCONF_PATH $tmp.pmcd.bak +needclean=true +$sudo cp $tmp.pmcd.conf $PCP_PMCDCONF_PATH + +$sudo $signal -a -s TERM pmie >/dev/null 2>&1 +_change_config pmcd on +_change_config pmie off +$sudo rm -f $PCP_TMP_DIR/pmie/* + +_count_pmies +echo "pmie count at start of QA testing: $?" +echo + +SOCKS_SERVER=$PCPQA_SOCKS_SERVER +export SOCKS_SERVER + +_change_config pmie on +$sudo cp $tmp.control $PCP_PMIECONTROL_PATH +$sudo chown pcp:pcp $PCP_PMIECONTROL_PATH +$sudo chmod 664 $PCP_PMIECONTROL_PATH + +echo === check pmie_check and custom config === +pmie_check -V -V -N -c $tmp.control 2>&1 | _filter +# don't bother counting pmie processes, as -N is used above! +# +echo + +echo === check customised control file === +$sudo $PCP_RC_DIR/pmie restart 2>&1 | _filter_pmie_start +sleep 30 # can take awhile, but in bg - TODO: really needs a "pmie_wait" +_count_pmies +echo "pmie count with custom config (expect 3): $?" +echo + +$sudo $PCP_RC_DIR/pmie stop 2>&1 | _filter_pmie_start +_change_config pmie off + +status=0 +exit |