#!/bin/sh
# PCP QA Test No. 857
# Check Linux interrupts and softirqs metrics with valgrind.
#
# Copyright (c) 2016 Red Hat.
#

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

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

_check_valgrind
[ $PCP_PLATFORM = linux ] || _notrun "Linux interrupts test, only works with Linux"

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

_filter()
{
    sed \
	-e "s,$PCP_PMDAS_DIR,PCP_PMDAS_DIR,g" \
    #end
}

# real QA test starts here
pmda=$PCP_PMDAS_DIR/linux/pmda_linux.so,linux_init
metrics="kernel.percpu.intr kernel.percpu.interrupts kernel.percpu.softirqs"
machine=8cpu-x86_64

export LINUX_STATSPATH=$tmp.root
export LINUX_NCPUS=8

mkdir -p $LINUX_STATSPATH/proc
cp $here/linux/interrupts-$machine $LINUX_STATSPATH/proc/interrupts
cp $here/linux/softirqs-$machine $LINUX_STATSPATH/proc/softirqs
_make_proc_stat $LINUX_STATSPATH/proc/stat $LINUX_NCPUS

echo "== Checking interrupts and softirqs names"
_run_valgrind pminfo -L -K clear -K add,60,$pmda $metrics | _filter
echo && echo "== done" && echo

echo "== Checking interrupts and softirqs values"
_run_valgrind pminfo --fetch -L -K clear -K add,60,$pmda $metrics | _filter
echo && echo "== done" && echo

echo "== Checking interrupts and softirqs helptext"
_run_valgrind pminfo -tT -L -K clear -K add,60,$pmda $metrics | _filter
echo && echo "== done" && echo

# success, all done
status=0
exit
