#! /bin/sh # PCP QA Test No. 455 # Sanity checks for rsyslog pmda # # Copyright (c) 2011 Aconex. All Rights Reserved. # seq=`basename $0` echo "QA output created by $seq" # get standard filters . ./common.product . ./common.check . ./common.filter perl -e "use PCP::PMDA" >/dev/null 2>&1 test $? -eq 0 || _notrun "PCP::PMDA perl module is not installed" grep rsyslog.elasticsearch.submits $PCP_PMDAS_DIR/rsyslog/pmdarsyslog.pl >/dev/null [ $? -eq 0 ] || _notrun "Newer version of rsyslog PMDA needed" install_on_cleanup=false pminfo rsyslog >/dev/null 2>&1 && install_on_cleanup=true status=1 done_clean=false _cleanup() { if $done_clean then : else [ -f $tmp.pmcd.conf ] && $sudo mv $tmp.pmcd.conf $PCP_PMCDCONF_PATH rm -f $tmp.* $sudo $PCP_RC_DIR/pcp restart | _filter_pcp_start _wait_for_pmcd _wait_for_pmlogger if $install_on_cleanup then ( cd $PCP_PMDAS_DIR/rsyslog; $sudo ./Install /dev/null 2>&1 ) else ( cd $PCP_PMDAS_DIR/rsyslog; $sudo ./Remove >/dev/null 2>&1 ) fi done_clean=true fi exit $status } _filter() { # number of warnings depends on rsyslog config sed \ -e '/Creating rsyslog statistics file/d' \ -e 's/ [0-9]* warnings/ some warnings/g' } _val_filter() { $PCP_AWK_PROG ' /^rsyslog\.interval/ { fix = 1 } fix == 1 && /value [0-9][0-9]*/ { $2 = "NUMBER" } { print } NF == 0 { fix = 0 }' } trap "_cleanup" 0 1 2 3 15 # real QA test starts here iam=rsyslog cd $PCP_PMDAS_DIR/$iam # copy the pmcd config file to restore state later. cp $PCP_PMCDCONF_PATH $tmp.pmcd.conf # start from a known starting point $sudo ./Remove >/dev/null 2>&1 $sudo rm -f pmns domain.h echo echo "=== $iam agent installation ===" $sudo rm -f $PCP_LOG_DIR/rsyslog/stats $sudo ./Install $tmp.out 2>&1 _filter_pmda_install <$tmp.out \ | _filter echo echo "=== validate values ===" rm -f $tmp.stats echo "\ 2011-05-11T08:18:02.420771+10:00 host rsyslogd-pstats: imuxsock: submitted=85 ratelimit.discarded=0 ratelimit.numratelimiters=24 2011-05-11T08:18:02.420797+10:00 host rsyslogd-pstats: main Q: size=1181 enqueued=1181 full=0 maxqsize=1181 2011-05-11T08:18:07.423713+10:00 host rsyslogd-pstats: imuxsock: submitted=85 ratelimit.discarded=0 ratelimit.numratelimiters=24 2011-05-11T08:18:07.423752+10:00 host rsyslogd-pstats: main Q: size=1 enqueued=1183 full=0 maxqsize=1182" > $tmp.stats for i in 1 2 3 4 5 do [ -p $PCP_LOG_DIR/rsyslog/stats ] && break sleep 1 done if [ ! -p $PCP_LOG_DIR/rsyslog/stats ] then echo "Arrgh failed to see named pipe $PCP_LOG_DIR/rsyslog/stats after 5 seconds" ls -l $PCP_LOG_DIR/rsyslog exit fi $sudo sh -c "cat $tmp.stats >> $PCP_LOG_DIR/rsyslog/stats" sleep 2 # give some time for pmdarsyslog to be told $sudo sh -c "cat $tmp.stats >> $PCP_LOG_DIR/rsyslog/stats" sleep 2 # give more time for pmdarsyslog to be told pminfo rsyslog \ | LC_COLLATE=POSIX sort \ | while read metric do pminfo -f $metric done \ | _val_filter echo echo "=== remove $iam agent ===" $sudo ./Remove >$tmp.out 2>&1 _filter_pmda_remove <$tmp.out status=0 exit