summaryrefslogtreecommitdiff
path: root/qa/200
blob: a77f18c135151044b9dd59426469b062618edece (plain)
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
#! /bin/sh
# PCP QA Test No. 200
# $PMCD_RECONNECT_TIMEOUT validation
#
# 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

rm -f $seq.out
if [ $PCP_VER -lt 3702 ]
then
    ln $seq.out.1 $seq.out || exit 1
else
    ln $seq.out.2 $seq.out || exit 1
fi

status=1
rm -f $seq.full

_filter()
{
    $PCP_AWK_PROG '
BEGIN		{ last = "" }
$0 != last	{ print; last = $0 }' \
    | sed \
	-e 's/failed: Connection reset by peer/failed: IPC protocol failure/' \
	-e 's/[A-Z][a-z][a-z] [A-Z][a-z][a-z]  *[0-9][0-9]* [0-9][0-9]:[0-9][0-9]:[0-9][0-9]/DATE/' \
	-e '/recon([0-9][0-9]*)/s//recon(PID)/' \
	-e '/^Context\[/d' \
	-e '/^pmReconnectContext(/d' \
	-e '/^Dump Contexts:/d' \
	-e '/^Dump Instance Profile /d' \
	-e '/^IPC table fd/d' \
	-e '/^__pmConnectPMCD(/d' \
	-e '/^__pmDecodeXtendError:/d' \
	-e '/^pmNewContext(/d' \
	-e '/^__pmSendCreds:/d' \
	-e '/^__pmSetSocketIPC:/d' \
	-e '/^__pmSetVersionIPC:/d' \
	-e '/^__pmDataIPC: /d' \
	-e '/^__pmSetDataIPC:/d' \
	-e '/^pmWhichContext(/d' \
	-e '/__pmConnect(fd=.*) ->/d' \
    | $PCP_AWK_PROG '
/delay: 6 /	{ print "delay: 6-10 secs"; next }
/delay: 7 /	{ print "delay: 6-10 secs"; next }
/delay: 8 /	{ print "delay: 6-10 secs"; next }
/delay: 9 /	{ print "delay: 6-10 secs"; next }
/delay: 10 /	{ print "delay: 6-10 secs"; next }
/delay: 14 /	{ print "delay: 14-16 secs"; next }
/delay: 15 /	{ print "delay: 14-16 secs"; next }
/delay: 16 /	{ print "delay: 14-16 secs"; next }
		{ print }'
}

cat >$tmp.new <<End-of-File
# From QA 200
#
# Name	Id	IPC	IPC Params 	File/Cmd
pmcd	2	dso	pmcd_init	$PCP_PMDAS_DIR/pmcd/pmda_pmcd.so
sample	29	pipe	binary 		$PCP_PMDAS_DIR/sample/pmdasample -d 29 
End-of-File

# copy the pmcd config file to restore state later.
$sudo cp $PCP_PMCDCONF_PATH $tmp.pmcd.conf
$sudo cp $tmp.new $PCP_PMCDCONF_PATH

# ensure we have pmcd ready for the first iteration.
$sudo $PCP_RC_DIR/pcp start >/dev/null 2>&1
_wait_for_pmcd
_wait_for_pmlogger

_cleanup()
{
    [ -f $tmp.pmcd.conf ] && $sudo cp $tmp.pmcd.conf $PCP_PMCDCONF_PATH
    [ "$PCP_PLATFORM" != "linux" ] && _change_config pmlogger on
    $sudo $PCP_RC_DIR/pcp restart >/dev/null
    _wait_for_pmcd
    _wait_for_pmlogger
    $sudo rm -f $tmp.pmcd.conf
    rm -f $tmp.*
    exit $status
}

trap _cleanup 0 1 2 3 15

# real QA test starts here
for xxx in "" "1,3,5" "2" "1-2" "1,2,foo"
do
    if [ "X$xxx" = X ]
    then
	unset PMCD_RECONNECT_TIMEOUT
    else
	PMCD_RECONNECT_TIMEOUT="$xxx"
	export PMCD_RECONNECT_TIMEOUT
    fi

    echo
    echo "PMCD_RECONNECT_TIMEOUT=\"$PMCD_RECONNECT_TIMEOUT\""
    echo "start PMCD_RECONNECT_TIMEOUT=$PMCD_RECONNECT_TIMEOUT" >>$seq.full
    echo "start `date`" >>$seq.full

    DEBUG=
    DEBUG=-D16
    src/recon $DEBUG >$tmp.out 2>&1 &

    sleep 2
    echo "begin stop pmcd `date`" >>$seq.full
    $sudo $PCP_RC_DIR/pcp stop | _filter_pcp_stop
    echo "end stop pmcd `date`" >>$seq.full
    sleep 4
    echo "begin start pmcd `date`" >>$seq.full
    $sudo $PCP_RC_DIR/pcp start \
    | _filter_pcp_start \
    | sed -e '/starting archive loggers/d' -e '/Starting pmlogger/d'
    echo "end start pmcd `date`" >>$seq.full

    wait
    _filter <$tmp.out
    cat $tmp.out >>$seq.full
done

status=0
exit