File: 389

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 (88 lines) | stat: -rwxr-xr-x 2,829 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
#! /bin/sh
# PCP QA Test No. 389
# Exercise pmlogger behaviour when it loses pmcd connection
#
# 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

signal=$PCP_BINADM_DIR/pmsignal
host=`hostname`
status=1	# failure is the default!

_filter()
{
    sed -e '/myFetch: End of File: PMCD exited/d' \
	-e '/pmlogger: Error: IPC protocol failure/d'
}

trap "[ -n "$pid" ] && $sudo $PCP_BINADM_DIR/pmsignal -s TERM $pid >/dev/null 2>&1; $sudo rm -f $tmp.*; exit \$status" 0 1 2 3 15

# real QA test starts here
echo "=== empty config and _no_ -L, should exit immediately ===" | tee -a $seq_full
pmlogger -c /dev/null -l $tmp.log $tmp &
sleep 2
echo "expect no pmlogger process ..."
ps $PCP_PS_ALL_FLAGS | $PCP_AWK_PROG '$2 == "'$!'" { print }'
_filter_pmlogger_log <$tmp.log | sed -e "s/$host/HOST/"

echo | tee -a $seq_full
echo "=== empty config and -L, no reconnect and no exit ===" | tee -a $seq_full
$sudo rm -f $tmp.*		# refactor-ok
_start_up_pmlogger -L -c /dev/null -l $tmp.log $tmp
_wait_for_pmlogger $pid $tmp.log 5 || _exit 1
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
echo "expect pmlogger process ..."
ps $PCP_PS_ALL_FLAGS | $PCP_AWK_PROG '$2 == "'$pid'" { print "OK"}'
_filter_pmlogger_log <$tmp.log | sed -e "s/$host/HOST/"
$sudo $signal -s TERM $pid

echo | tee -a $seq_full
echo "=== non-empty config, reconnect when pmcd restarted ===" | tee -a $seq_full
# force quick reconnection to pmcd for pmlogger
#
PMCD_RECONNECT_TIMEOUT=1; export PMCD_RECONNECT_TIMEOUT
$sudo rm -f $tmp.*		# refactor-ok
echo "log mandatory on 1 sec pmcd.version" >$tmp.config
_start_up_pmlogger -c $tmp.config -l $tmp.log $tmp
_wait_for_pmlogger $pid $tmp.log 5 || _exit 1
echo "pid=$pid" >>$seq_full
ps $PCP_PS_ALL_FLAGS | grep '[p]mlogger' | grep $tmp >>$seq_full
if ! _service pmcd stop; then _exit 1; fi \
| _filter_pcp_stop
sleep 2
if ! _service pmcd start 2>&1; then _exit 1; fi | _filter_pcp_start
_wait_for_pmcd || _exit 1
_wait_for_pmlogger || _exit 1
# need longer delay here to allow pmlogger to reconnect and revalidate
# metrics
sleep 4
echo "expect pmlogger process ..." | tee -a $seq_full
ps $PCP_PS_ALL_FLAGS \
| grep '[p]mlogger' \
| grep $tmp \
| tee -a $seq_full \
| $PCP_AWK_PROG '$2 == "'$pid'" { print "OK"}'
_filter_pmlogger_log <$tmp.log | _filter | sed -e "s/$host/HOST/"
$sudo $signal -s TERM $pid
sleep 2
echo "pmlogger log file ..." >>$seq_full
cat $tmp.log >>$seq_full
echo "expect one mark record ..."
pmdumplog -M $tmp | grep '<mark>' | wc -l | sed -e 's/ //g'

# success, all done
status=0
exit