#!/bin/sh
# PCP QA Test No. 1177
# Check pmTraversePMNS return codes match man page.
# See https://github.com/performancecopilot/pcp/issues/441
#
# Copyright (c) 2018 Red Hat.  All Rights Reserved.
#

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

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

pminfo kernel.percpu.cpu.wait >/dev/null 2>&1 || _notrun "kernel.percpu.cpu.wait metric not available"

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

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

TRAV=$here/src/traverse_return_codes
[ -x $TRAV ] || _notrun missing binary $TRAV

# real QA test starts here

_check()
{
    _name=$1

    $TRAV local: $_name > $tmp.$$ 2>&1
    status=$?
    echo "    === $_name status=$status" | tee -a $seq.full 2>&1
    cat $tmp.$$ >>$seq.full
    [ $status -ne 0 ] && exit $status
}

echo == checking non-derived metrics | tee -a $seq.full
for name in sample.hordes sample.hordes.one disk.dev.read disk.dev \
	kernel.percpu.cpu.wait kernel.percpu.cpu.wait.total
do
    PCP_DERIVED_CONFIG="" _check $name
done

echo == checking derived metrics and subtrees containing them | tee -a $seq.full
for metric in disk.dev disk.dev.await
do
    PCP_DERIVED_CONFIG=$PCP_VAR_DIR/config/derived _check $metric
done

echo
echo "If failure, check $seq.full"

# success, all done
status=0
exit
