Merge branch 'master' of git://git.pcp.io/pcp into qt
[pcp.git] / qa / 102
blobbd5b9cccbe9eb81e9e6a505314d7158b48d7fc72
1 #! /bin/sh
2 # PCP QA Test No. 102
3 # pmlc parser/scanner/error handling
5 # Copyright (c) 1995-2002 Silicon Graphics, Inc. All Rights Reserved.
8 seq=`basename $0`
9 echo "QA output created by $seq"
11 # get standard filters
12 . ./common.product
13 . ./common.filter
14 . ./common.check
16 _cleanup()
18 _restore_config $PCP_SYSCONFIG_DIR/pmcd
19 _restore_primary_logger
20 $sudo $PCP_RC_DIR/pcp restart | _filter_pcp_start
21 _wait_for_pmcd
22 _wait_for_pmlogger
23 $sudo rm -f $tmp $tmp.*
24 exit $status
27 status=1
28 rm -f $seq.full
29 trap "_cleanup" 0 1 2 3 15
31 _filter_pmlc()
33 # error message mapping is due to differences between PCP_PLATFORMs
35 sed \
36 -e 's/connect [0-9][0-9]*/connect PID/' \
37 -e 's/Version [0-9].*/Version VERSION/' \
38 -e 's/^parse error/Syntax error/' \
39 -e 's/line [0-9]*/line NUM/g' \
40 -e 's/^syntax error/Syntax error/' \
41 -e 's/^Reason: Unknown or illegal.*$/Reason: No PMCD agent for domain of request/'
44 _disable_agent_restart()
46 echo PMCD_RESTART_AGENTS=0 > $tmp.defaults
47 $sudo cp $tmp.defaults $PCP_SYSCONFIG_DIR/pmcd
50 signal=$PCP_BINADM_DIR/pmsignal
52 # real QA test starts here
53 _save_config $PCP_SYSCONFIG_DIR/pmcd
54 _writable_primary_logger
55 _disable_agent_restart
56 ls -l $PCP_VAR_DIR/config/pmlogger/config.default >>$seq.full
57 cat $PCP_VAR_DIR/config/pmlogger/config.default >>$seq.full
58 pmlc -P </dev/null 2>&1 >>$seq.full
59 $sudo $PCP_RC_DIR/pcp restart | _filter_pcp_start
60 _wait_for_pmcd
61 _wait_for_pmlogger
63 pmlc -ie <<End-of-File >$tmp.out 2>$tmp.err
64 # not connected
65 query sample.drift
66 advisory on 1 hour sample.drift
68 connect primary
69 # incomplete - syntax error
70 query sample.bin [
71 query {
72 sample.drift
73 # eat input
74 # up to
75 # next } -- curly brace
77 query {
78 barf.no.metric
79 # suck to } ... not that one, this one ..
82 End-of-File
83 _filter_pmlc <$tmp.err
84 _filter_pmlc <$tmp.out
86 for delta in "-1 msec" "75 hours" "599 hours" "1200 hours"
88 $sudo rm -f $tmp.*
89 cat <<End-of-File >$tmp.config
90 log advisory on $delta sample.bin [100]
91 End-of-File
92 # pmlogger -c $tmp.config -T 4 $tmp
93 $sudo rm -f $tmp.*
94 _start_up_pmlogger -L -c /dev/null -l $tmp.log -T 4 $tmp
95 pmsleep 0.5
96 pmlc -ie <<End-of-File >$tmp.out 2>$tmp.err
97 connect $pid
98 log advisory on $delta sample.bin [100]
99 End-of-File
100 _filter_pmlc <$tmp.err
101 _filter_pmlc <$tmp.out
102 $sudo $signal -s TERM $pid
103 _wait_pmlogger_end $pid
104 _filter_pmlogger_log <$tmp.log
105 done
106 pmsleep 0.5
108 pmlc -ie <<End-of-File >$tmp.out 2>$tmp.err
109 connect primary
110 log mandatory on 1 hour { sample.bin, sample.drift, sample.seconds }
111 query sample.bin[333]
112 End-of-File
113 _filter_pmlc <$tmp.err
114 _filter_pmlc <$tmp.out
116 $sudo $signal -a pmdasample
117 pmsleep 0.5 # time to cleanup
118 pminfo -f sample >/dev/null 2>&1 # and make sure pmcd notices
120 pmlc -ie <<End-of-File >$tmp.out 2>$tmp.err
121 connect primary
122 query sample.bin[100]
123 query sample.bin[100]
124 End-of-File
125 _filter_pmlc <$tmp.err
126 _filter_pmlc <$tmp.out
128 $sudo $signal -a -s HUP pmcd
129 pmsleep 0.5 # time to cleanup
130 pmlc -ie <<End-of-File >$tmp.out 2>$tmp.err
131 connect primary
132 query sample.bin[100]
134 query { sample.bin,sample.drift sample.seconds }
135 query { sample.bin sample.drift,sample.seconds }
136 query sample.bin [100,200,300 400 500,700]
137 query sample.bin [100,"bin-200"]
138 End-of-File
139 _filter_pmlc <$tmp.err
140 _filter_pmlc <$tmp.out
142 pmlc -ie <<End-of-File >$tmp.out 2>$tmp.err
143 connect primary
144 log mandatory maybe {
145 sample.bin
146 sample.drift, sample.seconds
148 End-of-File
149 _filter_pmlc <$tmp.err
150 _filter_pmlc <$tmp.out
152 status=0
153 exit