summaryrefslogtreecommitdiff
path: root/qa/502
blob: 4e4a7aa64dc5bc2b58049974436901087379823f (plain)
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