diff options
Diffstat (limited to 'qa/314')
-rwxr-xr-x | qa/314 | 89 |
1 files changed, 89 insertions, 0 deletions
@@ -0,0 +1,89 @@ +#! /bin/sh +# PCP QA Test No. 314 +# Exercise pmie_daily functionality - log rotation +# +# Copyright (c) 2007 Aconex. All Rights Reserved. +# + +seq=`basename $0` +echo "QA output created by $seq" + +# get standard filters +. ./common.product +. ./common.filter +. ./common.check +. ./localconfig + +signal=$PCP_BINADM_DIR/pmsignal +status=1 # failure is the default! +trap "rm -fr $tmp.*; $sudo rm -fr /tmp/$seq; exit \$status" 0 1 2 3 15 + +# create a pmie config file, causing frequent output (to log) +cat > $tmp.config << EOF1 +delta = 0.2 seconds; +fetched = simple.numfetch; +EOF1 + +echo "=== pmie config ===" >$seq.full +cat $tmp.config >>$seq.full + +# create pmie control files and test out various good/bad conditions + +cat > $tmp.control << EOF2 +\$version=1.0 +LOCALHOSTNAME n /tmp/$seq/1.good.log -v -c $tmp.config +EOF2 + +echo "=== pmie control ===" >>$seq.full +cat $tmp.control >>$seq.full + +# real QA test starts here +$sudo $signal -a -s TERM pmie 2>/dev/null +$sudo rm -fr /tmp/$seq && mkdir /tmp/$seq || exit 1 +id pcp >/dev/null 2>&1 && $sudo chown -R pcp:pcp /tmp/$seq +pmstore simple.numfetch 0 >/dev/null + +# fire em all up +echo "Starting pmie process" +echo "=== pmie_check ===" >>$seq.full +$sudo $PCP_BINADM_DIR/pmie_check -c $tmp.control -VV >>$seq.full +ps $PCP_PS_ALL_FLAGS | grep '[p]mie' >>$seq.full +sleep 6 # fill original log a bit +cat /tmp/$seq/1.good.log >>$seq.full +ps $PCP_PS_ALL_FLAGS | grep '[p]mie' >>$seq.full + +echo "Rotate, rotate..." +previous=`pmdate -1d %Y%m%d` +echo "=== pmie_daily ===" >>$seq.full +$sudo $PCP_BINADM_DIR/pmie_daily -c $tmp.control -VV >>$seq.full +ps $PCP_PS_ALL_FLAGS | grep '[p]mie' >>$seq.full +sleep 3 # fill rotated log a bit + +echo "Shutdown pmie process" +echo "=== pmie_check ===" >>$seq.full +$sudo $PCP_BINADM_DIR/pmie_check -c $tmp.control -s -VV >>$seq.full +ps $PCP_PS_ALL_FLAGS | grep '[p]mie' >>$seq.full + +grep rotated /tmp/$seq/1.good.log >/dev/null \ + || echo "First log not rotated?" +grep rotated /tmp/$seq/1.good.log.$previous >/dev/null \ + || echo "New log not started?" + +# look for data in each log file, checking rotation actually did something +oldlines=`wc -l < /tmp/$seq/1.good.log.$previous 2>/dev/null || echo 0` +newlines=`wc -l < /tmp/$seq/1.good.log 2>/dev/null || echo 0` +# 5 samples / sec x ~6 sec x 2 lines per sample + 6 lines for header and footer +# so 66 +_within_tolerance "Old logfile line count" "$oldlines" 66 %75 -v +# 5 samples / sec x ~3 sec x 2 lines per sample + 6 lines for header and footer +# so 36 +_within_tolerance "New logfile line count" "$newlines" 36 %75 -v + +echo "=== previous log ($oldlines lines) ===" >>$seq.full +cat /tmp/$seq/1.good.log.$previous >>$seq.full +echo "=== current log ($newlines lines) ===" >>$seq.full +cat /tmp/$seq/1.good.log >>$seq.full + +# success, all done +status=0 +exit |