#!/bin/sh
# PCP QA Test No. 1373
# Check pmlogsize with V3 archive
# non-valgrind variant, see qa/1374 for the valgrind variant
#
# Copyright (c) 2022 Ken McDonell.  All Rights Reserved.
#

if [ $# -eq 0 ]
then
    seq=`basename $0`
    echo "QA output created by $seq"
else
    # use $seq from caller, unless not set
    [ -n "$seq" ] || seq=`basename $0`
    echo "QA output created by `basename $0` $*"
fi

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

do_valgrind=false
if [ "$1" = "--valgrind" ]
then
    _check_valgrind
    do_valgrind=true
elif _prefer_valgrind
then
    [ $PCPQA_VALGRIND = both ] || \
	_notrun "valgrind variant qa/1374 will be run"
fi

_cleanup()
{
    cd $here
    $sudo rm -rf $tmp $tmp.*
}

status=0	# success is the default!
$sudo rm -rf $tmp $tmp.* $seq.full
trap "_cleanup; exit \$status" 0 1 2 3 15

# indoms and labels have size that depend on the length of the
# local hostname ... so filter these numbers out
#
_filter()
{
    tee -a $seq.full \
    | sed \
	-e '/data:/{
s/[0-9][0-9]* bytes/NNNNN bytes/
}' \
	-e '/indoms:/{
s/[0-9][0-9]* bytes/NNNN bytes/
s/[0-9][0-9]*%/NN%/
}' \
	-e '/labels:/{
s/[0-9][0-9]* bytes/NNN bytes/
s/[0-9][0-9]*%/N%/
}' \
    | $PCP_AWK_PROG '
special == 1	{	# texts|overhead maybe off by 1
		  if ($1 == "texts:") {
		    if ($4 == "[25%," || $4 == "[26%,")
			$4 = "[OK%,"
		  }
		  if ($1 == "overhead:") {
		    if ($4 == "[25%]" || $4 == "[26%]")
			$4 = "[OK%]"
		  }
		}
		{ print }
$1 == "tmparch/sample-proc_v3.meta:"	{ special = 1; next }
$1 ~ /^tmparch/				{ special = 0 }
'
}

# real QA test starts here

echo "=== V2 ==="
if $do_valgrind
then
    _run_valgrind pmlogsize tmparch/sample-proc_v2
else
    pmlogsize tmparch/sample-proc_v2 2>&1
fi \
| _filter

echo
echo "=== V3 ==="
if $do_valgrind
then
    _run_valgrind pmlogsize tmparch/sample-proc_v3
else
    pmlogsize tmparch/sample-proc_v3 2>&1
fi \
| _filter

# success, all done
exit
