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
|
#!/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!
$sudo rm -rf $tmp.* $seq.full
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 '/^_pm/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 -a $1 | tee -a $seq.full >$tmp.in
pmdumplog -z -a $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/*
cp src/$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 src/$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/*
cp src/$arch.* $tmp.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/*
cp src/$arch.* $tmp.arch
ls -l $tmp.arch >>$seq.full
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/
}'
ls $tmp.arch
ls -l $tmp.arch >>$seq.full
_cmp src/$arch $tmp.arch/$arch
# success, all done
exit
|