blob: 8c35a342814d22e018309d19554f8fed73b4736c (
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
|
#! /bin/sh
# PCP QA Test No. 225
# Basic parsing for derived metric definitions ... no binding, so no
# semantic checks
#
# Copyright (c) 2009 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
if grep -q 'pmRegisterDerived' $PCP_DIR/usr/include/pcp/pmapi.h
then
:
else
echo "No derived metric support" >$seq.notrun
echo "$seq: [not run] `cat $seq.notrun`"
exit 0
fi
unset PCP_DERIVED_CONFIG
status=0 # success is the default!
$sudo rm -rf $tmp.* $seq.full
trap "rm -f $tmp.*; exit \$status" 0 1 2 3 15
_filter()
{
cat $tmp.out >>$seq.full
awk <$tmp.out >$tmp.sed '
# expr node 0x9edc340 type=PLUS left=0x9edc2f8 right=0x9edc370
$1 == "expr" && $2 == "node" && $3 ~ /^0x/ { print "s/" $3 "/<addr-" n ">/"; n++ }
{ next }'
echo "=== sed ===" >>$seq.full
cat $tmp.sed >>$seq.full
sed -f $tmp.sed <$tmp.out \
| sed \
-e 's/=0x0 /=(nil) /g' \
-e 's/ref=0x[0-9a-f]*/ref=<addr>/' \
-e "s;$tmp;TMP;"
}
echo "root { local_pmns_no_pmcd_connection 1:2:3 }" >$tmp.pmns
# real QA test starts here
echo "No syntax errors here ..." | tee -a $seq.full
cat <<End-of-File >$tmp.config
myname.a = disk.dev.read
myname.b = disk.dev.read + disk.dev.write
myname.c = disk.dev.read + disk.dev.write + sample.long.writeme
myname.d = (disk.dev.read)
myname.e = 2 * disk.dev.write + sample.long.writeme
myname.f = 2 + disk.dev.write * sample.long.writeme
myname.g = ( 2 + disk.dev.write ) * sample.long.writeme
myname.h = 2 + ( disk.dev.write * sample.long.writeme )
myname.i = (disk.dev.write+disk.dev.read)*(sample.long.one+sample.long.ten)
myname.j = (disk.dev.write*disk.dev.read)+(sample.long.one*sample.long.ten)
myname.k = sample.long.one + sample.long.ten + sample.long.hundred + sample.long.million + sample.longlong.one + sample.longlong.ten + sample.longlong.hundred + sample.longlong.million
myname.l = sample.long.one + sample.long.ten + sample.long.hundred + sample.long.million - sample.longlong.one - sample.longlong.ten - sample.longlong.hundred - sample.longlong.million
myname.m = sample.long.one * sample.longlong.one + sample.long.ten * sample.longlong.ten
myname.n = sample.long.one + sample.longlong.one * sample.long.ten + sample.longlong.ten
myname.ABC.k42.x_1_3 = disk.dev.write*disk.dev.read + sample.long.one*sample.long.ten
myname.o= sample.long.one * sample.longlong.one + sample.long.ten * sample.longlong.ten + sample.long.hundred * sample.longlong.hundred + sample.long.million * sample.longlong.million
myname.p = pmcd.pdu_in.total / ( pmcd.pdu_in.total + pmcd.pdu_out.total )
myname.biggest.const = 4294967295
End-of-File
pminfo -Dderive,appl0 -c $tmp.config -n $tmp.pmns >$tmp.out 2>&1
_filter
echo | tee -a $seq.full
echo "Syntax errors ..." | tee -a $seq.full
cat <<End-of-File >$tmp.config
myname.a = sample.long.one +
myname.b = sample.long.one sample.long.ten
myname.c=sample.long.one**sample.long.ten
=
myname.d
myname.e =
myname.e sample.long.one + sample.long.ten
bad-name-xyz = sample.long.one
123_really_bad_name = sample.long.one
tricky._bad_name = sample.long.one
myname.f = pmcd.pdu_in.total / ( pmcd.pdu_in.total + pmcd.pdu_out.total
myname.g = pmcd.pdu_in.total / ( pmcd.pdu_in.total + pmcd.pdu_out.total ) )
myname.a = 1
myname.a = dup.name.a
myname.h = 4294967296
# extra tests here from gcov analysis
myname.gcov.a = foo = bar
# very long source lines to test buffer handling in parser
myname.gcov.b = sample.longlong.million + sample.longlong.million + sample.longlong.million + sample.longlong.million + sample.longlong.million + sample.longlong.million + sample.longlong.million + sample.longlong.million + sample.longlong.million + sample.longlong.million + sample.longlong.million + "bogus"
myname.gcov.c = sample.longlong.million.sample.longlong.million.sample.longlong.million.sample.longlong.million.sample.longlong.million.sample.longlong.million.sample.longlong.million.sample.longlong.million.sample.longlong.million.sample.longlong.million.sample.longlong.million.sample.longlong.million.sample.longlong.million + "bogus"
myname.gcov.d = 3 * space
myname.gcov.e = tab
myname.gcov.f = ( 1 + foo + ( ?
myname.gcov.g = /
End-of-File
pminfo -Dderive,appl0 -c $tmp.config -n $tmp.pmns >$tmp.out 2>&1
_filter
export PCP_DERIVED_CONFIG=/no/such/file
pminfo -Dderive -d no.such.metric
# success, all done
exit
|