1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160
|
#!/bin/sh
# PCP QA Test No. 502
# pmlogrewrite - -i option
#
# 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!
trap "rm -rf $tmp.*; exit \$status" 0 1 2 3 15
_filter()
{
tee -a $seq_full \
| sed \
-e "s;$tmp;TMP;g" \
-e "s;/$$\.;/PID.;g" \
-e '/^__pm/d' \
-e '/^pmaGetLog:/d' \
-e '/^logputresult:/d' \
-e '/[-+ ]\[[0-9][0-9]* bytes]/d' \
-e "s/^\([+-][+-][+-] TMP\...t*\).*/\1/"
}
_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 -dilmst $1 | tee -a $seq_full >$tmp.in
pmdumplog -z -dilmst $2 | tee -a $seq_full >$tmp.out
diff -u $tmp.in $tmp.out | _filter
}
mkdir $tmp.arch
# real QA test starts here
echo "=== metric not in archive ===" | tee -a $seq_full
arch=rewrite
rm -f $tmp.arch/*
pmlogcp archives/$arch $tmp.arch
ls -l $tmp.arch | tee -a $seq_full >$tmp.before
cat <<'End-of-File' >$tmp.conf
metric kernel.all.load { pmid -> 1.2.3 }
End-of-File
pmlogrewrite -Dlog -iqsvw -c $tmp.conf $tmp.arch/$arch 2>&1 \
| _filter \
| LC_COLLATE=POSIX sort
ls $tmp.arch
ls -l $tmp.arch | tee -a $seq_full >$tmp.after
if diff $tmp.before $tmp.after >/dev/null
then
:
else
echo "Directory differences, before ..."
cat $tmp.before
echo "After ..."
cat $tmp.after
fi
_cmp archives/$arch $tmp.arch/$arch
echo | tee -a $seq_full
echo "=== correctness checked in QA 493 ... only care about expected file contents here ===" | tee -a $seq_full
cat <<End-of-File >$tmp.conf
metric sample.ulong.bin_ctr {
indom -> NULL output MIN
type -> DOUBLE
units -> 1,0,0,BYTE,0,0
}
metric sample.ulonglong.bin_ctr {
indom -> NULL output MAX
type -> 32
units -> 1,0,0,BYTE,0,0
}
metric sampledso.double.bin_ctr {
indom -> NULL output AVG
type -> FLOAT
}
metric sample.float.bin_ctr {
indom -> NULL output SUM
type -> U64
}
metric sample.longlong.bin_ctr {
indom -> NULL output FIRST
type -> 64
units -> 1,-1,0,KBYTE,SEC,0
}
indom 29.2 { inst 200 -> DELETE }
indom 30.2 { inst 800 -> DELETE }
End-of-File
cat $tmp.conf >>$seq_full
arch=mirage
rm -f $tmp.arch/*
pmlogcp archives/$arch $tmp.arch/$arch
ls $tmp.arch
ls -l $tmp.arch >>$seq_full
pmlogrewrite -s -c $tmp.conf $tmp.arch/$arch $tmp.arch/$arch.expect 2>&1 \
| _filter \
| LC_COLLATE=POSIX sort
ls $tmp.arch
ls -l $tmp.arch >>$seq_full
pmlogrewrite -Dlog -si -c $tmp.conf $tmp.arch/$arch 2>&1 \
| _filter \
| LC_COLLATE=POSIX sort
ls -l $tmp.arch >>$seq_full
_cmp $tmp.arch/$arch $tmp.arch/$arch.expect
echo | tee -a $seq_full
echo "=== truncated archive ... expect no change ==="
cat <<End-of-File >$tmp.conf
indom 29.1 { iname "red" -> "really red" }
End-of-File
cat $tmp.conf >>$seq_full
arch=ok-truncbin
rm -f $tmp.arch/*
pmlogcp badarchives/$arch $tmp.arch/$arch
ls -l $tmp.arch >>$seq_full
# Note: 204XXX filtering is because stdio does not always return the same
# value on different platforms ... it is 204800 (EOF) on OpenBSD 6.3
# (vm33) but 204456 elsewhere
#
pmlogrewrite -Dlog -iwv -c $tmp.conf $tmp.arch/$arch 2>$tmp.err >$tmp.out
cat $tmp.out $tmp.err \
| _filter \
| sed \
-e '/inspect file/{
s/\.meta/.EXT/
s/\.index/.EXT/
s/\.0/.EXT/
}' \
-e '/occurred/s/offset 204[0-9][0-9][0-9]/offset 204XXX/' \
# end
ls $tmp.arch
ls -l $tmp.arch >>$seq_full
_cmp badarchives/$arch $tmp.arch/$arch
# success, all done
exit
|