#! /bin/sh # PCP QA Test No. 115 # exercises pmie_check functionality # See also of No. 504 ... for a version that uses pmsocks # # Copyright (c) 2002 Silicon Graphics, Inc. All Rights Reserved. # seq=`basename $0` echo "QA output created by $seq" # get standard filters . ./common.product . ./common.check . ./common.filter signal=$PCP_BINADM_DIR/pmsignal lhost=`hostname | sed -e 's/\..*//'` host=`_get_fqdn` remote=`./getpmcdhosts -n 1 -L 2>$tmp.out` rhost=`echo $remote | sed -e 's/\..*//'` if [ -z "$remote" ] then cat $tmp.out >$seq.notrun rm -f $tmp.out exit fi needclean=false if [ -z "$PCP_PMIECONTROL_PATH" ] then echo "Arrgh: Botch: PCP_PMIECONTROL_PATH not defined" exit 1 fi _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 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-$$/SEQ-PID/g" \ -e 's/$/ /' \ -e 's/\([ "]\)'"$remote"'\([ "]\)/\1REMOTEHOST\2/g' \ -e 's/\([ "]\)'"$rhost"'\([ "]\)/\1REMOTEHOST\2/g' \ -e 's/\([ "]\)'"$host"'\([ "]\)/\1LOCALHOST\2/g' \ -e 's/\([ "]\)local:\([ "]\)/\1LOCALHOST\2/g' \ -e "s;/private/tmp;/tmp;g" \ -e 's/ $//' } _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 files cat >$tmp.control << EOF \$version=1.0 $remote n $tmp.log1 -c $tmp.conf $remote n $tmp.log2 -c $tmp.conf LOCALHOSTNAME n $tmp.log0 $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 echo === check default install operation === $sudo $PCP_RC_DIR/pmie restart 2>&1 | _filter_pmie_start _count_pmies echo "pmie count after chkconfig pmie off: $?" echo echo === check for missing control file === _change_config pmie off $sudo rm -f $PCP_PMIECONTROL_PATH _change_config pmie on $sudo $PCP_RC_DIR/pmie restart 2>&1 | _filter_pmie_start _count_pmies echo "pmie count after attempt without control file: $?" echo 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 $sudo $PCP_RC_DIR/pmie stop 2>&1 \ | _filter_pmie_start \ | sed -e '/pmie: PMIE not running/d' _change_config pmie off status=0 exit