summaryrefslogtreecommitdiff
path: root/qa/314
diff options
context:
space:
mode:
Diffstat (limited to 'qa/314')
-rwxr-xr-xqa/31489
1 files changed, 89 insertions, 0 deletions
diff --git a/qa/314 b/qa/314
new file mode 100755
index 0000000..dcf5df2
--- /dev/null
+++ b/qa/314
@@ -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