File: 220

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 (129 lines) | stat: -rwxr-xr-x 3,003 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
#! /bin/sh
# PCP QA Test No. 220
# Does primary logger die and cleanup when pmcd exits?
#
# 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

which netstat >/dev/null 2>&1 || _notrun "netstat not installed"

case $PCP_PLATFORM
in
    linux)
	netstat_args='-n --tcp'
	;;
    openbsd)
	netstat_args='-n -p tcp'
	;;
    solaris)
	_notrun "netstat is so different here, too hard, move on"
	;;
    *)
	echo "Arrgh ... need netstat TCP+ESTABLISHED+IPADDR options for $PCP_PLATFORM"
	exit
esac

status=0
clean=false
LOCALHOST=`hostname`
LOGGING_DIR="$PCP_ARCHIVE_DIR"

_cleanup()
{
    if $clean
    then
	:
    else
	pmafm $LOGGING_DIR/$LOCALHOST/Latest remove >$tmp.cmd 2>&1 \
	&& $sudo sh $tmp.cmd
	rm -f $tmp.cmd
	# delay to allow pmcd socket to be closed
	#
	for i in 1 2 3 4 5
	do
	    echo "delay $i" >>$seq_full
	    if netstat $netstat_args | grep 44321 >>$seq_full
	    then
		sleep 1
	    else
		break
	    fi
	done
	_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
	clean=true

	# for some systems we're seeing ...
	#    Job for pmlogger.service failed because the service did
	#    not take the steps required by its unit configuration.
	# try to figure out why
	#
	if [ "$PCPQA_SYSTEMD" = yes ]
	then
	    eval `systemctl show pmlogger.service --property=ActiveState`
	    if [ "$ActiveState" != active ]
	    then
		$sudo systemctl status pmlogger.service >>$seq_full
		if which journalctl >/dev/null 2>&1
		then
		    $sudo journalctl -xe -u pmlogger.service >>$seq_full
		fi
	    fi
	fi
    fi
    $sudo rm -f $tmp.*
}

trap "_cleanup; exit \$status" 0 1 2 3 15

_stop_auto_restart pmcd
_stop_auto_restart pmlogger

# real QA test starts here

# Make sure we have a stable starting point. This test was passing when
# run alone, but failing if test 184 was run immediately before it.
if ! _service pmlogger restart 2>&1; then _exit 1; fi | _filter_pcp_restart
_wait_for_pmlogger || _exit 1

# all running, get primary pmlogger pid, then stop 'em all
#
_pid=`cat $PCP_RUN_DIR/pmlogger.pid 2>/dev/null`
if [ -z "$_pid" ]
then
    echo "Botch: primary pmlogger PID not found"
    ls -l $PCP_RUN_DIR
fi
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
[ -n "$_pid" ] && _wait_pmlogger_end $_pid
echo "primary pmlogger processes?  expect none"
ps $PCP_PS_ALL_FLAGS | grep '[p]mlogger.* -P'

echo
echo "primary port map? expect none"
if [ -e $PCP_TMP_DIR/pmlogger/primary ]; then
    echo "Eh?!  $PCP_TMP_DIR/pmlogger/primary exists and it should not"
    ls -l $PCP_TMP_DIR/pmlogger/primary
else
    echo "not there - goodness."
fi

# all done
exit