#! /bin/sh
# PCP QA Test No. 053
# Verify the good stuff happens with pmclient and pmclient_fg
#
# Copyright (c) 2016 Red Hat.
# 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

_filter()
{
    tee -a $seq.full \
    | sed -e 's/pmFetchGroup/pmFetch/g' \
    | $PCP_AWK_PROG '
/^Archive: /		{ print "... title ..."; next }
/^[0-9. 	]*$/	{ print "... " NF " numbers ..."; next }
			{ print }'
}

trap "rm -f $tmp $tmp.*; exit" 0 1 2 3 15

rm -f $here/$seq.full

# real QA test starts here
cat >$tmp.config <<End-of-File
log mandatory on once {
    hinv.ncpu
}
log mandatory on 5 secs {
    kernel.all.load [ "1 minute", "15 minute" ]
    kernel.percpu.cpu.user
    kernel.percpu.cpu.sys
    mem.freemem
    disk.all.total
}
End-of-File
pmlogger -c $tmp.config -l $tmp.log -s 4 $tmp
_filter_pmlogger_log <$tmp.log
cat $tmp.log >>$here/$seq.full

pmdumplog $tmp >>$here/$seq.full

ncpu=`pmprobe -v hinv.ncpu 2>&1 \
| $PCP_AWK_PROG '
NF == 3 && $2 == 1	{ print $3; exit }
			{ print "0"; exit }'`

run()
{
    pmclient=$1
    echo "== $pmclient variant =="

    # output is sensitive to SP/MP ... so do the one that is real,
    # and fake the other
    #
    if [ "$ncpu" -eq 1 ]
    then
	echo "real SP case" >>$here/$seq.full
	$pmclient -a $tmp 2>&1 | _filter
	echo "..."
	# fake MP output
	cat <<End-of-File
... title ...
  CPU  Busy    Busy  Free Mem   Disk     Load Average
 Util   CPU    Util  (Mbytes)   IOPS    1 Min  15 Min
... 7 numbers ...
... 7 numbers ...
$pmclient: pmFetch: End of PCP archive log
End-of-File
    else
	# fake SP output
	cat <<End-of-File
... title ...
  CPU  Free Mem   Disk     Load Average
 Util  (Mbytes)   IOPS    1 Min  15 Min
... 5 numbers ...
... 5 numbers ...
$pmclient: pmFetch: End of PCP archive log
End-of-File
	echo "..."
	echo "real MP case" >>$here/$seq.full
	$pmclient -a $tmp 2>&1 | _filter
    fi

    echo "== $pmclient done ==" && echo
}

run pmclient
run pmclient_fg
