blob: 0a55671f478d290aeecd29da00d35387e8684850 (
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
132
133
134
135
136
|
#! /bin/sh
# PCP QA Test No. 243
# Multiple PMCDs test
#
# 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
_get_libpcp_config
if $ipv6 ; then
ln $seq.out.ipv6 $seq.out || exit 1
else
ln $seq.out.nonipv6 $seq.out || exit 1
fi
_filter_err()
{
_filter_pmcd_log \
| sed \
-e 's/ __pmBind: / bind: /g' \
-e 's/may already be running/is already running/g' \
-e '/Log for pmcd/,/INADDR_ANY/c\
... boring stuff deleted' \
-e '/ok FD 44321 ipv6 INADDR_ANY/d' \
-e '/OpenRequestSocket.*unix.*bind: Address already in use/,+1 d' \
-e 's/ INADDR_ANY/ 0x0/g'
}
_filter_log()
{
sleep 3
_filter_pmcd_log <./pmcd.log \
| sed \
-e '/^DATA: from client/d' \
-e 's/Cannot open 000000660066: No such file or directory//' \
-e 's/^$//' \
-e '/^00[08]:/d' \
-e '/pmGetPDU/{
s/\[[0-9][0-9]*]/[PID]/
s/from=.*/from=PID/
}' \
-e '/_pmHaveMoreInput/{
s/\[[0-9][0-9]*]/[PID]/
s/0x[^ ]*\([^ ][^ ][^ ]\)/ADDR...\1/
}' \
-e '/Piggy-back/{
s/0x[^ ]*\([^ ][^ ][^ ]\)/ADDR...\1/
s/from=.*/from=PID/
}' \
-e '/pmXmitPDU/s/\[[0-9][0-9]*]/[PID]/' \
-e '/pmResult/s/ .* numpmid/ ... numpmid/' \
-e '/value /{
s/value [0-9][0-9]*/value INTEGER/
}' \
-e 's;pcp/lib/mips_[^.]*\.;pcp/lib/ISA.;' \
| $PCP_AWK_PROG '
$3 ~ /^[0-9][0-9]*$/ { $3 = "A_PID" }
{ print }'
}
signal=$PCP_BINADM_DIR/pmsignal
_needclean=true
rm -rf $tmp
mkdir $tmp
chmod ugo+rwx $tmp
cd $tmp
cleanup()
{
cd $here
if $_needclean
then
_needclean=false
$signal -s TERM $my_pmcd_pid
sleep 1
unset PMCD_SOCKET
echo "Restart and ping pmcd ..."
$sudo $PCP_RC_DIR/pcp restart | _filter_pcp_start
_wait_for_pmcd
_wait_for_pmlogger
pmprobe pmcd.control.debug
fi
rm -rf $tmp
}
status=1
trap "cleanup; exit \$status" 0 1 2 3 15
# real QA test starts here
$sudo $PCP_RC_DIR/pcp stop | _filter_pcp_stop
# Note: start pmcd with -f so that its PID stays the same (no daemon)
#
export PMCD_SOCKET=$tmp/pmcd.socket
$PCP_PMCD_PROG -f -x err1 &
my_pmcd_pid=$!
_wait_for_pmcd
echo "Checking for startup errors ..."
[ -f err1 ] && _filter_err <err1
# Try to start another pmcd. This should fail because the socket is already in
# use. Make sure that there are no changes to the log file
#
if [ -f pmcd.log ]
then
cp pmcd.log pmcd.log.$$
else
echo "No pmcd.log, pmcd failed to start!"
exit
fi
echo
echo "Trying to start another PMCD over the top of the first one."
echo "Expect \"bind: Address already in use\"...:"
$PCP_PMCD_PROG -f -x err2 2>&1 | _filter_err &
sleep 2
echo "Checking for startup errors ..."
[ -f err2 ] && _filter_err <err2
echo "Checking that log hasn't changed ..."
diff pmcd.log pmcd.log.$$
status=$?
|