diff options
Diffstat (limited to 'qa/508')
-rwxr-xr-x | qa/508 | 175 |
1 files changed, 175 insertions, 0 deletions
@@ -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 |