Merge branch 'master' of git://git.pcp.io/pcp into qt
[pcp.git] / qa / 571
blobc73ce7c70c1d4d6193d38e020878b54c38a9e9a0
1 #! /bin/sh
2 # PCP QA Test No. 571
4 # #676245 - dynamic indoms for pmlogger, uses sample.dynamic.*
5 # Check that when the instance domain changes for logged metrics
6 # the new indom is only added once. The bug was for pmlogger
7 # adding the indom once for each metric using it.
9 # Copyright (c) 1995-2002 Silicon Graphics, Inc. All Rights Reserved.
11 # check-group-include: pmlogger
13 seq=`basename $0`
14 echo "QA output created by $seq"
16 # get standard environment, filters and checks
17 . ./common.product
18 . ./common.filter
19 . ./common.check
21 signal=$PCP_BINADM_DIR/pmsignal
22 status=1 # failure is the default!
23 control=$PCP_PMDAS_DIR/sample/dynamic.indom
24 logger_pid=-1
26 PMLOGGER=pmlogger
27 SLEEPY=5
29 _cleanup()
31 if [ $logger_pid -gt 0 ]
32 then
33 $signal -s TERM $logger_pid
34 logger_pid=-1
37 $sudo rm -f $control
39 [ -f $control.qa-$seq ] && $sudo mv $control.qa-$seq $control
40 rm -f $tmp.*
43 $sudo rm -f $control.qa-$seq
45 trap "_cleanup; exit \$status" 0 1 2 3 15
47 [ -f $control ] && $sudo mv $control $control.qa-$seq
49 # real QA test starts here
51 _start_logger()
53 cat >$tmp.logconf <<End-of-File
54 log advisory on 2 sec {
55 sample.dynamic
57 End-of-File
59 $PMLOGGER -c $tmp.logconf -l $tmp.log $tmp.logfile &
60 logger_pid=$!
63 _filter_unwanted_indom()
65 _filter_pmdumplog | $PCP_AWK_PROG '
66 /^InDom: 2.1/ && step == 0 { step = 1; next }
67 step == 1 { step = 2; next }
68 step == 2 { step = 0; next }
69 { print }'
72 _dumplog()
74 sleep $SLEEPY
75 pmdumplog -i $tmp.logfile | _filter_unwanted_indom
78 # start the pmlogger
80 _start_logger
82 # do the first instance dump
84 _dumplog
86 # Change the instances
88 cat >$tmp.indom <<End-of-File
89 10 one
90 20 two
91 30 three
92 200 twenty
93 End-of-File
94 $sudo rm -f $control
95 $sudo cp $tmp.indom $control
97 # do the instance dump
99 _dumplog
101 # Add an instance
103 cat >$tmp.indom <<End-of-File
104 10 one
105 20 two
106 30 three
107 200 twenty
108 400 fourty
109 End-of-File
110 $sudo rm -f $control
111 $sudo cp $tmp.indom $control
113 # do the instance dump
115 _dumplog
117 # Change an instance
119 cat >$tmp.indom <<End-of-File
120 10 one
121 20 two
122 30 three
123 200 twenty
124 500 fifty
125 End-of-File
126 $sudo rm -f $control
127 $sudo cp $tmp.indom $control
129 # do the instance dump
131 _dumplog
133 # Remove some instances
135 cat >$tmp.indom <<End-of-File
136 10 one
137 20 two
138 30 three
139 End-of-File
140 $sudo rm -f $control
141 $sudo cp $tmp.indom $control
143 # do the instance dump
145 _dumplog
147 # success, all done
148 status=0
149 exit