diff options
Diffstat (limited to 'qa/280')
-rwxr-xr-x | qa/280 | 149 |
1 files changed, 149 insertions, 0 deletions
@@ -0,0 +1,149 @@ +#! /bin/sh +# PCP QA Test No. 280 +# pmlogger_check basic sanity check +# +# Copyright (c) 1995-2002 Silicon Graphics, Inc. All Rights Reserved. +# + +seq=`basename $0` +echo "QA output created by $seq" + +# get standard filters +. ./common.product +. ./common.filter +. ./common.check + +if [ -d $PCP_LOG_DIR/pmlogger ] +then + LOGGING_DIR=$PCP_LOG_DIR/pmlogger +else + LOGGING_DIR=$PCP_LOG_DIR +fi + +_filter() +{ + [ -z "$PCP_PMLOGGERCONTROL_PATH" ] && \ + PCP_PMLOGGERCONTROL_PATH="$PCP_SYSCONF_DIR/pmlogger/control" + PCP_PMLOGGERCONTROL_PATH=`dirname "$PCP_PMLOGGERCONTROL_PATH"` + sed \ + -e 's/\.\.\.*/[dots]/' \ + -e 's;/usr/var;/var;g' \ + -e "s/`hostname`/LOCALHOST/g" \ + -e "s/$LOCALHOST/LOCALHOST/g" \ + -e "s/localhost/LOCALHOST/g" \ + -e "s/local:/LOCALHOST/g" \ + -e 's/^Reconfigured: .*pmlogconf.//g' \ + -e 's;/private/;/;g' \ + -e "s;$LOGGING_DIR;\$PCP_LOG_DIR;" \ + -e "s;$PCP_LOG_DIR;\$PCP_LOG_DIR;" \ + -e "s;$PCP_PMLOGGERCONTROL_PATH;\$PCP_PMLOGGERCONTROL_PATH;" \ + -e 's/control:[0-9][0-9]*]/control:LINE]/' \ + -e 's/process [0-9][0-9]*/process PID/' \ + -e 's/\.* done/. done/' \ + -e 's/[0-9][0-9][0-9][0-9][0-9][0-9][0-9][0-9]\.[0-9][0-9]\.[0-9][0-9]/CHECK/' \ + -e 's/-rw-r--r--\./-rw-r--r--/' \ + | _filter_cron_scripts +} + +status=1 # failure is the default! +signal=$PCP_BINADM_DIR/pmsignal +LOCALHOST=`hostname` +[ $PCP_VER -lt 3806 ] && LOCALHOST=`echo $LOCALHOST | sed -e 's/\..*//'` +trap "rm -f $tmp.* $LOGGING_DIR/$LOCALHOST/lock; exit \$status" 0 1 2 3 15 + +rm -f $seq.full + +# real QA test starts here + +umask 022 + +# start from a known state +# +$sudo $PCP_RC_DIR/pcp stop >/dev/null 2>&1 +$sudo $PCP_RC_DIR/pcp start | _filter_pcp_start +_wait_for_pmcd +_wait_for_pmlogger -P $LOGGING_DIR/$LOCALHOST/pmlogger.log + +echo +echo "Ping primary logger ..." | tee -a $seq.full +echo 'connect primary' | pmlc + +echo +echo "Expect this should do nothing ..." | tee -a $seq.full +$sudo $PCP_BINADM_DIR/pmlogger_check -V 2>&1 | tee -a $seq.full | _filter +echo 'connect primary' | pmlc + +pid=`_get_primary_logger_pid` +if [ -z "$pid" ] +then + echo "Error: cannot find PID for primary logger" + LC_TIME=POSIX ls -l $PCP_TMP_DIR/pmlogger + pminfo -f pmcd.pmlogger + exit +fi + +echo +echo "Kill off primary logger ..." +$sudo $signal -s TERM $pid +sleep 2 +echo 'connect primary' | pmlc 2>&1 | _filter +pmafm $LOGGING_DIR/$LOCALHOST/Latest remove >$tmp.cmd 2>&1 \ +&& $sudo sh $tmp.cmd + +# delay to minimize risk of name clash +# +sleep 10 + +echo "Expect this to re-start the primary logger ..." | tee -a $seq.full +$sudo $PCP_BINADM_DIR/pmlogger_check -V 2>&1 | tee -a $seq.full | _filter +echo 'connect primary' | pmlc + +pid=`_get_primary_logger_pid` +if [ -z "$pid" ] +then + echo "Error: cannot find PID for primary logger" + LC_TIME=POSIX ls -l $PCP_TMP_DIR/pmlogger + pminfo -f pmcd.pmlogger + exit +fi + +echo +echo "Kill off primary logger ..." +$sudo $signal -s TERM $pid +sleep 2 +echo 'connect primary' | pmlc 2>&1 | _filter +pmafm $LOGGING_DIR/$LOCALHOST/Latest remove >$tmp.cmd 2>&1 \ +&& $sudo sh $tmp.cmd + +# delay to minimize risk of name clash +# +sleep 10 + +echo +echo "Expect this to quietly re-start the primary logger ..." | tee -a $seq.full +$sudo $PCP_BINADM_DIR/pmlogger_check 2>&1 | tee -a $seq.full | _filter +echo 'connect primary' | pmlc + +echo +echo "Expect this to get a mutex failure ..." | tee -a $seq.full +$sudo touch $LOGGING_DIR/$LOCALHOST/lock +$sudo $PCP_BINADM_DIR/pmlogger_check 2>&1 \ +| tee -a $seq.full | _filter \ +| $PCP_AWK_PROG ' +/-r.-r.-r.-/ { $3 = "USER"; $4 = "GROUP"; $6 = "Mmm"; $7 = "D"; $8 = "YYYY" } + { print }' + +echo +echo "Expect this to cleanup an old lock file ..." | tee -a $seq.full +$sudo rm -f $LOGGING_DIR/$LOCALHOST/lock +$sudo touch -t 199701020304.00 $LOGGING_DIR/$LOCALHOST/lock +$sudo $PCP_BINADM_DIR/pmlogger_check 2>&1 \ +| tee -a $seq.full | _filter \ +| $PCP_AWK_PROG ' +/-r.-r.-r.-/ { $3 = "USER"; $4 = "GROUP" } + { print }' +$sudo rm -f $LOGGING_DIR/$LOCALHOST/lock + +# success, all done +status=0 +exit |