#! /bin/sh
# PCP QA Test No. 068
# pmNewContext() bad error status if pmcd is not running
#
# Note: this is the simplest test to get the pmcd start/stop filtering
#	to be correct ... use this to tune _filter_pcp_start() and
#	_filter_pcp_stop() in common.filter
#
# Copyright (c) 1995-2002 Silicon Graphics, Inc.  All Rights Reserved.
#

seq=`basename $0`
echo "QA output created by $seq"

# get standard environment, filters and checks
. ./common.product
. ./common.filter
. ./common.check

_needclean=true
LOCALHOST=`hostname`
LOGGING_DIR="$PCP_ARCHIVE_DIR"
trap "_cleanup" 0 1 2 3 15

_stop_auto_restart pmcd

_cleanup()
{
    echo >>$seq_full
    echo "--- cleanup ---" >>$seq_full
    if [ $_needclean ]
    then
	pmafm $LOGGING_DIR/$LOCALHOST/Latest remove >$tmp.cmd 2>&1 \
	&& $sudo sh $tmp.cmd
	echo >>$seq_full
	echo "--- pcp stop ---" >>$seq_full
	_service pmlogger stop 2>&1 >>$seq_full
	_wait_pmlogger_end
	_service pmcd stop 2>&1 >>$seq_full
	_wait_pmcd_end
	echo "--- pcp start ---" >>$seq_full
	_service pmcd start 2>&1 \
	| tee -a $seq_full \
	| _filter_pcp_start
	_restore_auto_restart pmcd
	_service pmlogger start 2>&1 \
	| tee -a $seq_full \
	| _filter_pcp_start
	echo >>$seq_full
	echo "--- _wait_for_pmcd ---" >>$seq_full
	_wait_for_pmcd | tee -a $seq_full
	echo >>$seq_full
	echo "--- _wait_for_pmlogger ---" >>$seq_full
	_wait_for_pmlogger | tee -a $seq_full
    fi
    rm -f $tmp.*
    exit 0
}


# real QA test starts here
echo "--- pcp stop ---" >>$seq_full
if ! _service pmlogger stop 2>&1; then _exit 1; fi \
| tee -a $seq_full \
| _filter_pcp_stop
_wait_pmlogger_end || _exit 1
if ! _service pmcd stop 2>&1; then _exit 1; fi \
| tee -a $seq_full \
| _filter_pcp_stop
_wait_pmcd_end || _exit 1
echo >>$seq_full
echo "--- run pmcdgone ---" >>$seq_full
$sudo src/pmcdgone | tee -a $seq_full
