#! /bin/sh # PCP QA Test No. 530 # $Revision: 1.8 $ # pmlogger_daily ... do you work at all? # dual of 314 ... this is the PCP 2.1 version # # # Copyright (c) 1995-2002 Silicon Graphics, Inc. All Rights Reserved. # # creator owner=kenmcd seq=`basename $0` # Because pmlogger_daily is way too clever to use the same criteria # for deciding which logs to merge and which to cull, we have to have # QA output in 3 different timezones case "`date +%H`" in 00) rm -f $seq.out && ln $seq.out.00-01 $seq.out || exit 1 ;; 01) rm -f $seq.out && ln $seq.out.01-02 $seq.out || exit 1 ;; *) rm -f $seq.out && ln $seq.out.02-24 $seq.out || exit 1 ;; esac echo "QA output created by $seq" # get standard filters . ./common.filter . ./common.check _filter() { tee -a $seq.full \ | $PCP_AWK_PROG ' /^Archive files older than/ { eatlines=1; longone=" "; print; next; } eatlines { if ( match ($0, "^ ") ) { for ( i=1; i <=NF; i++ ) { longone = sprintf ("%s %s",longone,$i); } } else { print longone | "fmt -76"; close ("fmt -76"); longone = ""; eatlines = 0; print; } next; } END { if ( eatlines ) { print longone | "fmt -76"; close ("fmt -76"); } } { print }' \ | sed -f $tmp/sed \ | sed \ -e "s;$tmp;TMP;g" \ -e "s/`hostname`/HOST/g" \ -e '/\/var\/adm\/pcplog\/NOTICES/d' \ | $PCP_AWK_PROG ' /-rw-r--r--/ { print $1,"...",$5,"...",$9; next } { print }' \ | _filter_cron_scripts } tmp=/tmp/$$ sudo=`pwd`/sudo status=1 # failure is the default! trap "cd /; rm -rf $tmp; $sudo mv $PCP_LOG_DIR/NOTICES.$$ $PCP_LOG_DIR/NOTICES; exit \$status" 0 1 2 3 15 # take explicit control of the umask # umask 022 $sudo mv $PCP_LOG_DIR/NOTICES $PCP_LOG_DIR/NOTICES.$$ rm -f $seq.full rm -rf $tmp mkdir $tmp # real QA test starts here unset verbose for loop in 1 2 do echo >$tmp/sed for day in 0 1 2 3 4 5 do for fmt in %Y%m%d %y%m%d do namea=`pmdate -${day}d -1H $fmt.%H.%M` nameb=`pmdate -${day}d -2H $fmt.%H.%M` stampa=`echo $namea | sed -e 's/\.//g'` stampb=`echo $nameb | sed -e 's/\.//g'` if [ "$fmt" = "%Y%m%d" ] then echo "s/$namea/NOW-$day.-1H.MM/g" >>$tmp/sed echo "s/$nameb/NOW-$day.-2H.MM/g" >>$tmp/sed else echo "s/$namea/NOW-$day-old.-1H.MM/g" >>$tmp/sed echo "s/$nameb/NOW-$day-old.-2H.MM/g" >>$tmp/sed fi for ext in 0 index meta do cp src-oss/arch_a.$ext $tmp/$namea.$ext touch -t $stampa $tmp/$namea.$ext cp src-oss/arch_b.$ext $tmp/$nameb.$ext touch -t $stampb $tmp/$nameb.$ext done done done ls -lt $tmp >>$seq.full echo "s/NOW-0/TODAY/g" >>$tmp/sed echo "s/NOW-1/YESTERDAY/g" >>$tmp/sed echo "s/`pmdate %Y%m%d`/TODAY/g" >>$tmp/sed echo "s/`pmdate -1d %Y%m%d`/YESTERDAY/g" >>$tmp/sed echo "s/`pmdate -1d %y%m%d`/YESTERDAY-old/g" >>$tmp/sed echo >$tmp/control '$version=1.1 LOCALHOSTNAME n n '"$tmp"' ./config' echo echo "=== [${verbose+verbose}] regular show ===" echo "=== [${verbose+verbose}] regular show ===" >>$seq.full pmlogger_daily -c $tmp/control -k 2 $verbose 2>&1 \ | _filter ls $tmp | sed -f $tmp/sed | LC_COLLATE=POSIX sort echo echo "=== [${verbose+verbose}] nothing to do but cull some more ===" echo "=== [${verbose+verbose}] nothing to do but cull some more ===" >>$seq.full rm -f $tmp/`pmdate -${day}d %Y%m%d`.* pmlogger_daily -c $tmp/control -k 1 $verbose 2>&1 \ | _filter ls $tmp | sed -f $tmp/sed | LC_COLLATE=POSIX sort echo echo "=== [${verbose+verbose}] error, output already exists ===" echo "=== [${verbose+verbose}] error, output already exists ===" >>$seq.full for ext in 0 index meta do cp src-oss/arch_a.$ext $tmp/`pmdate -1d %Y%m%d`.17.18.$ext cp src-oss/arch_b.$ext $tmp/`pmdate -1d %y%m%d`.18.19.$ext done pmlogger_daily -c $tmp/control -k 1 $verbose 2>&1 \ | _filter ls $tmp | sed -f $tmp/sed | LC_COLLATE=POSIX sort verbose=-V rm -f $tmp/* done # all done status=0 exit