File: 948

package info (click to toggle)
pcp 7.1.0-1
  • links: PTS
  • area: main
  • in suites: forky, sid
  • size: 252,748 kB
  • sloc: ansic: 1,483,656; sh: 182,366; xml: 160,462; cpp: 83,813; python: 24,980; perl: 18,327; yacc: 6,877; lex: 2,864; makefile: 2,738; awk: 165; fortran: 60; java: 52
file content (159 lines) | stat: -rwxr-xr-x 3,769 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
#!/bin/sh
# PCP QA Test No. 948
# pmlogger local context functionality
#
# Copyright (c) 2015 Red Hat.  All Rights Reserved.
#

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

# get standard environment, filters and checks
. ./common.product
. ./common.filter
. ./common.check

_need_metric kernel.all.hz
_need_metric hinv.pagesize

_cleanup()
{
    cd $here
    _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 -rf $tmp.*
}

status=1	# failure is the default!
trap "_cleanup; exit \$status" 0 1 2 3 15
_stop_auto_restart pmcd
_stop_auto_restart pmlogger

cat <<End-of-File >$tmp.config
log mandatory on 1 sec {
    kernel.all.hz
    hinv.pagesize
    sampledso.long.million
}
End-of-File

_filter_kernel()
{
    sed \
	-e "s/value $hertz$/value HZ/g" \
	-e '/kernel.all.hz/s/[0-9][0-9.]* (/PMID (/' \
	-e "s/value $pagesz$/value PAGESZ/g" \
	-e '/hinv.pagesize/s/[0-9][0-9.]* (/PMID (/' \
	-e 's/TIMESTAMP  /              /g' \
    #end
}

_filter_usage()
{
    sed -e '/^Options:/{
p
s/.*/.../
q
}'
}

# Unable to connect to pmlogger pid 28124 at local:: Connection refused
# Connected to pmlogger pid 25625 at local:
_filter_pmlc()
{
    sed \
	-e "/^Unable/s/ $pid / PID /" \
	-e "/^Connected/s/ $pid / PID /" \
    # end
}

# real QA test starts here
echo "=== error cases ===" | tee -a $seq_full
rm -f $tmp.0 $tmp.meta $tmp.index $tmp.log
pmlogger -c /dev/null -o -h localhost $tmp -l $tmp.log 2>&1 | _filter_usage
[ -f $tmp.log ] && cat $tmp.log >>$seq_full

echo | tee -a $seq_full
echo "=== linger tests ===" | tee -a $seq_full
echo "--- expect error from pmlc ---" | tee -a $seq_full
rm -f $tmp.0 $tmp.meta $tmp.index $tmp.log
pmlogger -c /dev/null -o -l $tmp.log $tmp &
pid=$!
echo "pid=$pid" >>$seq_full
cat <<End-of-File >$tmp.pmlc
quit
End-of-File
sleep 1
pmlc -e <$tmp.pmlc $pid 2>&1 | _filter_pmlc
if ps -p $pid >/dev/null
then
    echo "Error: pmlogger still alive!"
    kill -TERM $pid
fi
[ -f $tmp.log ] && cat $tmp.log >>$seq_full

echo "--- expect success from pmlc ---" | tee -a $seq_full
rm -f $tmp.0 $tmp.meta $tmp.index $tmp.log
pmlogger -c /dev/null -L -o -l $tmp.log $tmp &
pid=$!
echo "pid=$pid" >>$seq_full
sleep 1
pmlc -e <$tmp.pmlc $pid 2>&1 | _filter_pmlc
if ps -p $pid >/dev/null
then
    kill -TERM $pid
else
    echo "Error: pmlogger has died!"
fi
[ -f $tmp.log ] && cat $tmp.log >>$seq_full

echo | tee -a $seq_full
echo "=== OK case ===" | tee -a $seq_full
hertz=`pmprobe -v kernel.all.hz | $PCP_AWK_PROG '{ print $3 }'`
pagesz=`pmprobe -v hinv.pagesize | $PCP_AWK_PROG '{ print $3 }'`

# ensure pmcd is unavailable while this test is running
if ! _service pmlogger stop 2>&1; then _exit 1; fi \
| _filter_pcp_stop
_wait_pmlogger_end || _exit 1
if ! _service pmcd stop 2>&1; then _exit 1; fi \
| _filter_pcp_stop
_wait_pmcd_end || _exit 1
rm -f $tmp.0 $tmp.meta $tmp.index $tmp.log
$sudo_local_ctx pmlogger -c $tmp.config -l $tmp.log -T 5 --local-PMDA -K add,30,$PCP_PMDAS_DIR/sample/pmda_sample.$DSO_SUFFIX,sample_init $tmp >$tmp.err 2>&1

_filter_pmlogger_log <$tmp.log

echo "verifying the archive"
pmlogcheck $tmp

# expect 4, 5 or 6 sample lines for each metric
echo PAGESZ samples:
pmdumplog $tmp \
	| _filter_pmdumplog \
	| grep 'hinv.pagesize' \
	| _filter_kernel \
	| sed -e 5d -e 6d
echo HZ samples:
pmdumplog $tmp \
	| _filter_pmdumplog \
	| grep 'kernel.all.hz' \
	| _filter_kernel \
	| sed -e 5d -e 6d
echo MILLION samples:
pmdumplog $tmp \
	| _filter_pmdumplog \
	| grep 'sampledso.long.million' \
	| _filter_kernel \
	| sed -e 5d -e 6d

echo "Full log dump:" >> $seq_full
pmdumplog $tmp >> $seq_full

# success, all done
status=0
exit