diff options
Diffstat (limited to 'qa/455')
-rwxr-xr-x | qa/455 | 127 |
1 files changed, 127 insertions, 0 deletions
@@ -0,0 +1,127 @@ +#! /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 >/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 </dev/null >$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 |