summaryrefslogtreecommitdiff
path: root/qa/496
blob: ed064bace3a3e1290bd90b1e9d01c1e0e18e3a49 (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
#!/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