diff options
Diffstat (limited to 'qa/503')
-rwxr-xr-x | qa/503 | 192 |
1 files changed, 192 insertions, 0 deletions
@@ -0,0 +1,192 @@ +#!/bin/sh +# PCP QA Test No. 503 +# Test pmlogrewrite use with pmlogger_daily +# +# Copyright (c) 2011 Ken McDonell. All Rights Reserved. +# + +seq=`basename $0` +echo "QA output created by $seq" + +# get standard environment, filters and checks +. ./common.product +. ./common.filter +. ./common.check + +which pmlogrewrite >/dev/null 2>&1 || _notrun "pmlogrewrite not installed" + +status=0 # success is the default! +$sudo rm -rf $tmp.* $seq.full +trap "$sudo rm -rf $tmp.*; exit \$status" 0 1 2 3 15 + +hostname=`hostname | sed -e 's/\..*//'` + +_filter() +{ + tee -a $seq.full \ + | sed \ + -e "s/for host $hostname/for host HOSTNAME/g" \ + -e "s/for host localhost/for host HOSTNAME/g" \ + -e "s/for host localhost\.localdomain/for host HOSTNAME/g" \ + -e "s/for host local:/for host HOSTNAME/g" \ + -e "s/for host \"localhost\"/for host \"HOSTNAME\"/g" \ + -e "s/for host \"localhost\.localdomain\"/for host \"HOSTNAME\"/g" \ + -e "s/for host \"local:\"/for host \"HOSTNAME\"/g" \ + -e "s/for host \"$hostname\"/for host \"HOSTNAME\"/g" \ + -e "s;$tmp;TMP;g" \ + -e "s/^\([+-][+-][+-] TMP\...t*\).*/\1/" \ + -e '/^-rw-r--r--/s/-rw-r--r--.* 2011/-rw-r--r-- ... 2011/' \ + -e `echo $PCP_LOG_DIR | sed -e 's/\//\\\\\//g'`'\/NOTICES/d' +} + +_setup() +{ + rm -f $tmp.arch/* + for x in 0 meta index + do + cp src/rewrite.$x $tmp.arch/20111001.21.10.$x + cp src/rewrite.$x $tmp.arch/20111001.22.10.$x + done + echo "global { time -> +1:00:00 }" >$tmp.conf.time + pmlogrewrite -c $tmp.conf.time -i $tmp.arch/20111001.22.10 +} + +_cmp() +{ + ok=true + for ext in 0 index meta + do + if [ ! -f "$1.$ext" ] + then + echo "Arrgh ... $1.$ext missing" | _filter + ok=false + fi + if [ ! -f "$2.$ext" ] + then + echo "Warning: $2.$ext missing" | _filter + ok=false + fi + done + $ok || return + pmdumplog -z -a $1 \ + | tee -a $seq.full \ + | sed -e '/^\[[0-9][0-9]* bytes]/d' >$tmp.in + + pmdumplog -z -a $2 \ + | tee -a $seq.full \ + | sed -e '/^\[[0-9][0-9]* bytes]/d' >$tmp.out + diff -u $tmp.in $tmp.out | _filter +} + +# take explicit control of the umask +# +umask 022 + +mkdir $tmp.arch + +# metrics in play from src/rewrite archive +# +# sample.bin PMID: 29.0.6 +# Data Type: 32-bit int InDom: 29.2 0x7400002 +# Semantics: instant Units: none +# inst [100 or "bin-100"] value 100 +# inst [200 or "bin-200"] value 200 +# inst [300 or "bin-300"] value 300 +# inst [400 or "bin-400"] value 400 +# inst [500 or "bin-500"] value 500 +# inst [600 or "bin-600"] value 600 +# inst [700 or "bin-700"] value 700 +# inst [800 or "bin-800"] value 800 +# inst [900 or "bin-900"] value 900 +# +# sampledso.double.hundred PMID: 30.0.27 +# Data Type: double InDom: PM_INDOM_NULL 0xffffffff +# Semantics: instant Units: none +# value 100 +# +# Log Label (Log Format Version 2) +# Performance metrics from host bozo-laptop +# commencing Sat Oct 1 21:10:11.751 2011 +# ending Sat Oct 1 21:10:12.128 2011 +# Archive timezone: EST-10 +# + +cat <<End-of-File >$tmp.control +\$version=1.1 +LOCALHOSTNAME n n $tmp.arch -c $tmp.pmlogger +End-of-File + +cat <<End-of-File >$tmp.pmlogger +log mandatory on once { sample.bin } +End-of-File + +# real QA test starts here +echo "+++ should just work ... +++" | tee -a $seq.full +_setup +$sudo $PCP_BINADM_DIR/pmlogger_daily -c $tmp.control -V 2>&1 | _filter +mkdir $tmp.ok +mv $tmp.arch/20111001.* $tmp.ok + +cat <<'End-of-File' | while read conf +global { hostname -> dreaming } +metric sampledso.double.hundred { type -> float } +End-of-File +do + echo "$conf" >$tmp.conf + echo | tee -a $seq.full + echo "!!! $conf !!!" | tee -a $seq.full + + echo | tee -a $seq.full + echo "+++ expect mismatch +++" | tee -a $seq.full + _setup + pmlogrewrite -c $tmp.conf -i $tmp.arch/20111001.22.10 + $sudo $PCP_BINADM_DIR/pmlogger_daily -c $tmp.control -V 2>&1 | _filter + + echo | tee -a $seq.full + echo "+++ expect fix via local config file +++" | tee -a $seq.full + _setup + pmlogrewrite -c $tmp.conf -i $tmp.arch/20111001.22.10 + cp $tmp.conf $tmp.arch/pmlogrewrite + $sudo $PCP_BINADM_DIR/pmlogger_daily -c $tmp.control -V 2>&1 | _filter + _cmp $tmp.ok/20111001 $tmp.arch/20111001 + + echo | tee -a $seq.full + echo "+++ expect fix via local symlink config file +++" | tee -a $seq.full + _setup + pmlogrewrite -c $tmp.conf -i $tmp.arch/20111001.22.10 + ln -s $tmp.conf $tmp.arch/pmlogrewrite + $sudo $PCP_BINADM_DIR/pmlogger_daily -c $tmp.control -V 2>&1 | _filter + _cmp $tmp.ok/20111001 $tmp.arch/20111001 + + echo | tee -a $seq.full + echo "+++ expect fix via global config dir +++" | tee -a $seq.full + _setup + pmlogrewrite -c $tmp.conf -i $tmp.arch/20111001.22.10 + $sudo mkdir -p $PCP_VAR_DIR/config/pmlogrewrite + $sudo cp $tmp.conf $PCP_VAR_DIR/config/pmlogrewrite/qa.$seq + $sudo $PCP_BINADM_DIR/pmlogger_daily -c $tmp.control -V 2>&1 | _filter + _cmp $tmp.ok/20111001 $tmp.arch/20111001 + $sudo rm -f $PCP_VAR_DIR/config/pmlogrewrite/qa.$seq + + echo | tee -a $seq.full + echo "+++ expect fix via symlink to global config dir +++" | tee -a $seq.full + _setup + pmlogrewrite -c $tmp.conf -i $tmp.arch/20111001.22.10 + $sudo mkdir -p $PCP_VAR_DIR/config/pmlogrewrite + $sudo cp $tmp.conf $PCP_VAR_DIR/config/pmlogrewrite/qa.$seq + ln -s $PCP_VAR_DIR/config/pmlogrewrite $tmp.arch/pmlogrewrite + $sudo $PCP_BINADM_DIR/pmlogger_daily -c $tmp.control -V 2>&1 | _filter + _cmp $tmp.ok/20111001 $tmp.arch/20111001 + $sudo rm -f $PCP_VAR_DIR/config/pmlogrewrite/qa.$seq + +done + +echo | tee -a $seq.full +echo "+++ expect fail when -r used and local config file present +++" | tee -a $seq.full +_setup +pmlogrewrite -c $tmp.conf -i $tmp.arch/20111001.22.10 +cp $tmp.conf $tmp.arch/pmlogrewrite +$sudo $PCP_BINADM_DIR/pmlogger_daily -r -c $tmp.control -V 2>&1 | _filter + +# success, all done +exit |