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
|
#!/bin/sh
# PCP QA Test No. 496
# pmlogrewrite - multiple -c options and -c dir 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()
{
sed \
-e "s;$tmp;TMP;g" \
-e "s;/$seq-$$\.;/SEQ-PID.;g" \
-e '/[-+ ]\[[0-9][0-9]* bytes]/d' \
-e "s/^\([+-][+-][+-] TMP\...t*\).*/\1/"
}
_cmp()
{
if [ ! -f "$1.0" ]
then
echo "Arrgh ... $1.0 missing" | _filter
return
fi
if [ ! -f "$2.0" ]
then
echo "Arrgh ... $2.0 missing" | _filter
return
fi
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
}
cat <<End-of-File >$tmp.conf.1
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
}
End-of-File
cat <<End-of-File >$tmp.conf.2
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
}
End-of-File
cat <<End-of-File >$tmp.conf.3
indom 29.2 { inst 200 -> DELETE }
indom 30.2 { inst 800 -> DELETE }
End-of-File
cat $tmp.conf.? >$tmp.conf.all
# real QA test starts here
# Note - correctness of this archive and config is established in QA 493
#
echo "=== baseline ==="
rm -f $tmp.baseline.*
pmlogrewrite -ws -c $tmp.conf.all src/rewrite $tmp.baseline 2>&1 | _filter
echo
echo "=== one config file ==="
rm -f $tmp.new.*
pmlogrewrite -ws -c $tmp.conf.all src/rewrite $tmp.new 2>&1 | _filter
_cmp $tmp.baseline $tmp.new
echo
echo "=== three config files ==="
rm -f $tmp.new.*
pmlogrewrite -ws -c $tmp.conf.1 -c $tmp.conf.2 -c $tmp.conf.3 src/rewrite $tmp.new 2>&1 | _filter
_cmp $tmp.baseline $tmp.new
echo
echo "=== config dir with regular files ==="
mkdir $tmp.conf.dir
cp $tmp.conf.[123] $tmp.conf.dir
rm -f $tmp.new.*
pmlogrewrite -ws -c $tmp.conf.dir src/rewrite $tmp.new 2>&1 | _filter
_cmp $tmp.baseline $tmp.new
echo
echo "=== config dir with symlinks files and hidden files ==="
rm -f $tmp.conf.dir/*
for i in 1 2 3
do
ln -s $tmp.conf.$i $tmp.conf.dir
done
echo "metric sampledso.ulong.hundred { type -> U32 }" >$tmp.conf.dir/.$seq-$$.conf.4
rm -f $tmp.new.*
pmlogrewrite -ws -c $tmp.conf.dir src/rewrite $tmp.new 2>&1 | _filter
_cmp $tmp.baseline $tmp.new
echo
echo "=== config dir unhide bad file ==="
mv $tmp.conf.dir/.$seq-$$.conf.4 $tmp.conf.dir/$seq-$$.conf.4
rm -f $tmp.new.*
# need to sort here because the order in which the files are processed
# depends in readdir() and is not deterministic
pmlogrewrite -ws -c $tmp.conf.dir src/rewrite $tmp.new 2>&1 \
| LC_COLLATE=POSIX sort \
| _filter
_cmp $tmp.baseline $tmp.new
# success, all done
exit
|