File: 102

package info (click to toggle)
pcp 7.0.5-1
  • links: PTS
  • area: main
  • in suites: forky, sid
  • size: 252,916 kB
  • sloc: ansic: 1,478,844; sh: 177,285; xml: 160,462; cpp: 83,809; python: 24,349; perl: 18,303; yacc: 6,877; lex: 2,864; makefile: 2,694; awk: 165; fortran: 60; java: 52
file content (182 lines) | stat: -rwxr-xr-x 4,418 bytes parent folder | download
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
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
#! /bin/sh
# PCP QA Test No. 102
# pmlc parser/scanner/error handling
#
# Copyright (c) 1995-2002 Silicon Graphics, Inc.  All Rights Reserved.
#

seq=`basename $0`
echo "QA output created by $seq"

# get standard filters
. ./common.product
. ./common.filter
. ./common.check

_cleanup()
{
    _restore_config $PCP_SYSCONFIG_DIR/pmcd
    _restore_primary_logger
    _service pmcd restart 2>&1 | _filter_pcp_restart
    _wait_for_pmcd
    _restore_auto_restart pmcd
    _service pmlogger restart 2>&1 | _filter_pcp_restart
    _wait_for_pmlogger
    _restore_auto_restart pmlogger
    $sudo rm -f $tmp $tmp.*
    exit $status
}

status=1
trap "_cleanup" 0 1 2 3 15

_stop_auto_restart pmcd
_stop_auto_restart pmlogger

_filter_pmlc()
{
    # error message mapping is due to differences between PCP_PLATFORMs
    #
    sed \
	-e 's/connect [0-9][0-9]*/connect PID/' \
	-e 's/Version [0-9].*/Version VERSION/' \
	-e 's/^parse error/Syntax error/' \
	-e 's/line [0-9]*/line NUM/g' \
	-e 's/^syntax error/Syntax error/' \
	-e 's/^Reason: Unknown or illegal.*$/Reason: No PMCD agent for domain of request/'
}

# if we're below the PMAPI (as opposed to sleeping in the main pmlogger
# loop) when SIGTERM is delivered, we risk seeing errors like
#    pmGetInDom(29.2): IPC protocol failure
# and pmlogger will then exit ... treat these like the expected Info:
# ... Caught signal ... message
#
_my_logger_filter()
{
    sed -e '/^_*pm.*: IPC protocol failure/s/.*/[DATE] pmlogger(PID) Info: pmlogger: Caught signal 15, exiting/'
}

_disable_agent_restart()
{
    echo PMCD_RESTART_AGENTS=0 > $tmp.defaults
    $sudo cp $tmp.defaults $PCP_SYSCONFIG_DIR/pmcd
}

signal=$PCP_BINADM_DIR/pmsignal

# real QA test starts here
_save_config $PCP_SYSCONFIG_DIR/pmcd
_writable_primary_logger
_disable_agent_restart
ls -l $PCP_VAR_DIR/config/pmlogger/config.default >>$seq_full
cat $PCP_VAR_DIR/config/pmlogger/config.default >>$seq_full
pmlc -P </dev/null 2>&1 >>$seq_full
if ! _service pmcd restart 2>&1; then _exit 1; fi \
| _filter_pcp_restart
_wait_for_pmcd || _exit 1
if ! _service pmlogger restart 2>&1; then _exit 1; fi \
| _filter_pcp_restart
_wait_for_pmlogger || _exit 1
$PCP_PS_PROG $PCP_PS_ALL_FLAGS | grep -E '[P]PID|/[p]mlogger( |$)' >>$seq_full

cat <<End-of-File >$tmp.pmlc
# not connected
query sample.drift
advisory on 1 hour sample.drift

connect primary
# incomplete - syntax error
query sample.bin [
query {
sample.drift
# eat input
# up to
# next } -- curly brace
}
query {
barf.no.metric
# suck to } ... not that one, this one ..
}

End-of-File
_try_pmlc
_filter_pmlc <$tmp.err
_filter_pmlc <$tmp.out

for delta in "-1 msec" "75 hours" "599 hours" "1200 hours"
do
    $sudo rm -f $tmp.*		# refactor-ok
    cat <<End-of-File >$tmp.config
log advisory on $delta sample.bin [100]
End-of-File
    $sudo rm -f $tmp.*		# refactor-ok
    _start_up_pmlogger -L -c /dev/null -l $tmp.log -T 6 $tmp
    pmsleep 1.5
    cat <<End-of-File >$tmp.pmlc
connect $pid
log advisory on $delta sample.bin [100]
End-of-File
    _try_pmlc
    _filter_pmlc <$tmp.err
    _filter_pmlc <$tmp.out
    $sudo $signal -s TERM $pid
    _wait_pmlogger_end $pid || _exit 1
    _filter_pmlogger_log <$tmp.log | _my_logger_filter
done
pmsleep 1

cat <<End-of-File >$tmp.pmlc
connect primary
log mandatory on 1 hour { sample.bin, sample.drift, sample.seconds }
query sample.bin[333]
End-of-File
_try_pmlc
_filter_pmlc <$tmp.err
_filter_pmlc <$tmp.out

$sudo $signal -a pmdasample
pmsleep 1				# time to cleanup
pminfo -f sample >/dev/null 2>&1	# and make sure pmcd notices

cat <<End-of-File >$tmp.pmlc
connect primary
query sample.bin[100]
query sample.bin[100]
End-of-File
_try_pmlc
_filter_pmlc <$tmp.err
_filter_pmlc <$tmp.out

$sudo $signal -a -s HUP pmcd
pmsleep 1				# time to cleanup
cat <<End-of-File >$tmp.pmlc
connect primary
query sample.bin[100]

query { sample.bin,sample.drift sample.seconds }
query { sample.bin sample.drift,sample.seconds }
query sample.bin [100,200,300 400 500,700]
query sample.bin [100,"bin-200"]
End-of-File
_try_pmlc
_filter_pmlc <$tmp.err
# nl state is non-deterministic because pmlogger might, or might not,
# have logger these metrics by now
#
_filter_pmlc <$tmp.out \
| sed -e 's/mand on    /mand on  nl/'

cat <<End-of-File >$tmp.pmlc
connect primary
log mandatory maybe {
    sample.bin
    sample.drift, sample.seconds
}
End-of-File
_try_pmlc
_filter_pmlc <$tmp.err
_filter_pmlc <$tmp.out

status=0
exit