summaryrefslogtreecommitdiff
path: root/qa/508
diff options
context:
space:
mode:
Diffstat (limited to 'qa/508')
-rwxr-xr-xqa/508175
1 files changed, 175 insertions, 0 deletions
diff --git a/qa/508 b/qa/508
new file mode 100755
index 0000000..e1321f1
--- /dev/null
+++ b/qa/508
@@ -0,0 +1,175 @@
+#!/bin/sh
+# PCP QA Test No. 508
+# pmlogreduce workout (includes check for obscure interp.c bug reported
+# by Arthur Kepner @ sgi)
+#
+# Copyright (c) 2011 Ken McDonell. All Rights Reserved.
+#
+
+seq=`basename $0`
+echo "QA output created by $seq"
+
+# get standard environment, filters and checks
+. ./common.product
+. ./common.filter
+. ./common.check
+
+status=0 # success is the default!
+$sudo rm -rf $tmp.* $seq.full
+trap "rm -f $tmp.*; exit \$status" 0 1 2 3 15
+
+# real QA test starts here
+
+_filter1()
+{
+ sed \
+ -e '/^archive:/d' \
+ -e '/^end:/d' \
+ -e '/^samples:/d'
+}
+
+_filter2()
+{
+ sed \
+ -e '/^[a-z]/d' \
+ -e '/^Note/s/.*/<<< pmval header >>>/'
+}
+
+_join()
+{
+ # Note: sed in the pipeline is because join(1) on ia64 SuSE SLES 11
+ # is broken and produces gratuitous white space in the output
+ #
+ join -a 1 -a 2 $1 $2 \
+ | sed -e 's/ */ /g' \
+ | awk '
+/No .* values available No .* values available/ { next }
+ { ok = 0 }
+NF % 2 == 1 { for (i = 2; i < 2+(NF-1)/2; i++) {
+ j = i+(NF-1)/2
+ if ($i == $j)
+ continue
+ if ($i+0 == $i && $j+0 == $j &&
+ 0.98*$i <= $j && $j <= 1.02*$i)
+ continue
+ break
+ }
+ if (i == 2+(NF-1)/2)
+ ok = 1
+ }
+ok == 0 { print }'
+}
+
+if pmlogreduce -A 3sec -t 3sec src/interpmark $tmp.reduce
+then
+ :
+else
+ echo "Arrgh: pmlogreduce failed!"
+ status=1
+ exit
+fi
+
+# from src/mkinterpmark ...
+#
+# metric semantics type indom sample
+# disk.dev.read counter U64 60.1 500msec
+# disk.dev.write counter U64 60.1 2sec
+# disk.dev.total counter U64 60.1 10sec
+# disk.all.read counter U64 NULL 500msec
+# disk.all.write counter U64 NULL 2sec
+# disk.all.total counter U64 NULL 10sec
+# disk.dev.read_bytes counter U32 60.1 500msec
+# disk.dev.write_bytes counter U32 60.1 2sec
+# disk.dev.total_bytes counter U32 60.1 10sec
+# disk.all.read_bytes counter U32 NULL 500msec
+# disk.all.write_bytes counter U32 NULL 2sec
+# disk.all.total_bytes counter U32 NULL 10sec
+#
+# filesys.used instant U64 60.5 500msec
+# sample.longlong.bin instant 64 29.2 2sec
+# filesys.free instant U64 60.5 10sec
+# sample.longlong.one instant 64 NULL 500msec
+# swap.length instant U64 NULL 2sec
+# mem.util.kernelStack instant U64 NULL 10sec
+# filesys.usedfiles instant U32 60.5 500msec
+# swapdev.free instant U32 60.6 2sec
+# pmcd.buf.alloc instant 32 2.5 10sec
+# sample.control instant 32 NULL 500msec
+# kernel.all.uptime instant U32 NULL 2sec
+# network.tcpconn.close instant U32 NULL 10sec
+#
+# filesys.capacity discrete U64 60.5 2sec
+# tmpfs.capacity discrete U64 60.18 once
+#
+# mem.physmem discrete U64 NULL 2sec
+#
+# filesys.capacity discrete U32 60.5 2sec
+# hinv.cpu.cache discrete U32 60.0 once
+# filesys.maxfiles discrete U32 60.5 once
+# hinv.physmem discrete U32 NULL 2sec
+# hinv.pagesize discrete U32 NULL once
+# hinv.ncpu discrete U32 NULL once
+
+for m in \
+ \#500msec \
+ disk.dev.read disk.all.read disk.dev.read_bytes disk.all.read_bytes \
+ filesys.used sample.longlong.one filesys.usedfiles sample.control \
+ \#2sec \
+ disk.all.write disk.dev.write_bytes disk.all.write_bytes \
+ sample.longlong.bin swap.length swapdev.free kernel.all.uptime \
+ filesys.capacity mem.physmem filesys.capacity hinv.physmem \
+ \#10sec \
+ disk.dev.total disk.all.total disk.dev.total_bytes \
+ disk.all.total_bytes filesys.free mem.util.kernelStack \
+ pmcd.buf.alloc network.tcpconn.close \
+ \#once \
+ tmpfs.capacity hinv.cpu.cache filesys.maxfiles hinv.pagesize \
+ hinv.ncpu
+do
+ case "$m"
+ in
+ \#*)
+ continue
+ ;;
+ esac
+ echo "=== $m ===" | tee -a $seq.full
+ pmval -rz -w 12 -f 3 -A 3sec -t 3sec -a src/section-a $m \
+ | _filter1 >$tmp.in
+ pmval -rz -w 12 -f 3 -A 3sec -t 3sec -a src/section-b $m \
+ | _filter2 >>$tmp.in
+ pmval -rz -w 12 -f 3 -A 3sec -t 3sec -a src/section-d $m \
+ | _filter2 >>$tmp.in
+ sed -n '/^[0-2]/{
+s/[ ]*$//
+s/No values/No input values/
+p
+}' $tmp.in >$tmp.in2
+ echo "--- inputs compared to merge ---" | tee -a $seq.full
+ pmval -rz -w 12 -f 3 -U src/interpmark $m >>$seq.full 2>&1
+
+ pmval -rz -w 12 -f 3 -A 3sec -t 3sec -a src/interpmark $m \
+ | tee -a $seq.full \
+ | _filter1 >$tmp.merge
+ sed -n '/^[0-2]/{
+s/[ ]*$//
+s/No values/No merge values/
+p
+}' $tmp.merge >$tmp.tmp
+ _join $tmp.in2 $tmp.tmp
+
+ echo "--- merge compared to reduce ---"
+ pmval -rz -w 12 -f 3 -U $tmp.reduce $m >>$seq.full 2>&1
+
+ pmval -Dfetch,log,interp -rz -w 12 -f 3 -A 3sec -t 3sec -a $tmp.reduce $m 2>&1 \
+ | tee -a $seq.full \
+ | sed -n '/^[0-2]/{
+s/[ ]*$//
+s/No values/No reduce values/
+p
+}' >$tmp.out
+ _join $tmp.tmp $tmp.out
+
+done
+
+# success, all done
+exit