1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122
|
#!/bin/sh
# PCP QA Test No. 886
# Verify /proc/interrupts parsing for various architectures.
#
# Copyright (c) 2016,2019 Red Hat.
#
seq=`basename $0`
echo "QA output created by $seq"
# get standard environment, filters and checks
. ./common.product
. ./common.filter
. ./common.check
[ $PCP_PLATFORM = linux ] || _notrun "Linux interrupts test, only works with Linux"
status=1 # failure is the default!
_cleanup()
{
cd $here
for indom in 0 40 41
do
[ -f $PCP_VAR_DIR/config/pmda/$domain.$indom.$seq ] && \
_restore_config $PCP_VAR_DIR/config/pmda/$domain.$indom
done
rm -rf $tmp.*
}
trap "_cleanup; exit \$status" 0 1 2 3 15
_unpack()
{
qafile=$1
target=$2
suffix=`echo "$file" | sed 's/.*\.//'`
if [ "$suffix" = "bz2" ]
then
bunzip2 < "$qafile" > "$target"
elif [ "$suffix" = "gz" ]
then
gunzip < "$qafile" > "$target"
else
cp "$qafile" "$target"
fi
}
# real QA test starts here
root=$tmp.root
export LINUX_STATSPATH=$root
pmda=$PCP_PMDAS_DIR/linux/pmda_linux.so,linux_init
interrupts=`echo $here/linux/interrupts-* | LC_COLLATE=POSIX sort`
softirqs=`echo $here/linux/softirqs-* | LC_COLLATE=POSIX sort`
# override the default contents of PMDA cache files
# (do not want localhost versions to be used here).
# Note: domain 60 and indom ordinal 0, 40, 41 is magic, from
# $ pminfo -d kernel.percpu.intr kernel.percpu.interrupts kernel.percpu.softirqs
# kernel.percpu.intr
# Data Type: 64-bit unsigned int InDom: 60.0 0xf000000
# ^^ ^ here
# kernel.percpu.interrupts
# Data Type: 32-bit unsigned int InDom: 60.40 0xf000028
# ^^ ^^ here
# kernel.percpu.softirqs
# Data Type: 32-bit unsigned int InDom: 60.41 0xf000029
# ^^ ^^ here
#
domain=60
for indom in 0 40 41
do
[ -f $PCP_VAR_DIR/config/pmda/$domain.$indom ] && \
_save_config $PCP_VAR_DIR/config/pmda/$domain.$indom
$sudo rm -f $PCP_VAR_DIR/config/pmda/$domain.$indom
done
for file in $interrupts
do
rm -fr $root
mkdir -p $root/proc || _fail "root in use when processing $file"
_unpack $file $root/proc/interrupts
base=`basename $file`
ncpu=`echo $base | sed -e 's/.*-\([0-9][0-9]*\)cpu-.*/\1/'`
_make_proc_stat $root/proc/stat $ncpu
export LINUX_NCPUS=$ncpu
echo "== Checking interrupts metrics from $base ($ncpu CPU)"
src/indom -v -r 10 -L -K clear -K add,$domain,$pmda kernel.percpu.intr kernel.percpu.interrupts
echo && echo "== done" && echo
echo "== Checking interrupts helptext from $base ($ncpu CPU)"
pminfo -tT -L -K clear -K add,$domain,$pmda kernel.percpu.intr kernel.percpu.interrupts
echo && echo "== done" && echo
cd $here
done
for file in $softirqs
do
rm -fr $root
mkdir -p $root/proc || _fail "root in use when processing $file"
_unpack $file $root/proc/softirqs
base=`basename $file`
ncpu=`echo $base | sed -e 's/.*-\([0-9][0-9]*\)cpu-.*/\1/'`
_make_proc_stat $root/proc/stat $ncpu
export LINUX_NCPUS=$ncpu
echo "== Checking softirqs metrics from $base ($ncpu CPU)"
src/indom -v -r 10 -L -K clear -K add,$domain,$pmda kernel.percpu.softirqs
echo && echo "== done" && echo
echo "== Checking softirqs helptext from $base ($ncpu CPU)"
pminfo -tT -L -K clear -K add,$domain,$pmda kernel.percpu.intr kernel.percpu.interrupts
echo && echo "== done" && echo
cd $here
done
# success, all done
status=0
exit
|