#! /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"

status=0
clean=false
LOCALHOST=`hostname`

if [ -d $PCP_LOG_DIR/pmlogger ]
then
    LOGGING_DIR=$PCP_LOG_DIR/pmlogger
else
    LOGGING_DIR=$PCP_LOG_DIR
fi

_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" >>$here/$seq.full
	    if netstat -t -n | grep 44321 >>$here/$seq.full
	    then
		sleep 1
	    else
		break
	    fi
	done
	_service pcp start 2>&1 | _filter_pcp_start
	_restore_auto_restart pmcd
	_restore_auto_restart pmlogger
	_wait_for_pmcd
	_wait_for_pmlogger
	clean=true
    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.
_service pmlogger restart 2>&1 | _filter_pcp_start

_service pcp stop | _filter_pcp_stop
echo "primary pmlogger processes?  exect none"
ps $PCP_PS_ALL_FLAGS | grep 'pmlogger.* -P' | grep -v grep

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
