diff options
author | Igor Pashev <pashev.igor@gmail.com> | 2014-10-26 12:33:50 +0400 |
---|---|---|
committer | Igor Pashev <pashev.igor@gmail.com> | 2014-10-26 12:33:50 +0400 |
commit | 47e6e7c84f008a53061e661f31ae96629bc694ef (patch) | |
tree | 648a07f3b5b9d67ce19b0fd72e8caa1175c98f1a /qa/370 | |
download | pcp-47e6e7c84f008a53061e661f31ae96629bc694ef.tar.gz |
Debian 3.9.10debian/3.9.10debian
Diffstat (limited to 'qa/370')
-rwxr-xr-x | qa/370 | 215 |
1 files changed, 215 insertions, 0 deletions
@@ -0,0 +1,215 @@ +#!/bin/sh +# PCP QA Test No. 370 +# +# exercise sar2pcp +# +# Copyright (c) 2012 Red Hat. +# Copyright (c) 2010 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 + +which sar >/dev/null 2>&1 || _notrun "sar not installed" +which sadf >/dev/null 2>&1 || _notrun "sadf not installed" +which sar2pcp >/dev/null 2>&1 || _notrun "sar2pcp not installed" + +version=`sar -V 2>&1 | sed -n -e '/sysstat version /{ +s/.* // +p +}'` + +rm -f $seq.out +file_version=$version +case "$version" +in + 9.0.4*) # RHEL6 + ln $seq.out.4 $seq.out || exit 1 + file_version=9.0.4 + ;; + 9.0.6.1) + ln $seq.out.5 $seq.out || exit 1 + ;; + 9.0.6*) + ln $seq.out.1 $seq.out || exit 1 + file_version=9.0.6 + ;; + 9.1.7*) + ln $seq.out.2 $seq.out || exit 1 + file_version=9.1.7 + ;; + 10.0.1*) + ln $seq.out.3 $seq.out || exit 1 + file_version=10.0.1 + ;; + 10.0.5*) + ln $seq.out.6 $seq.out || exit 1 + file_version=10.0.5 + ;; + 10.2.0) + ln $seq.out.7 $seq.out || exit 1 + ;; + *) + _notrun "no qualified output for sysstat version $version" + ;; +esac +[ -f src/sa-sysstat-$file_version ] || \ + _notrun "no data file (sa-sysstat-$file_version) for sysstat version $version" + +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 + +sar2pcp src/sa-sysstat-$file_version $tmp + +# version 9.x output +# 11:07:39 CPU %user %nice %system %iowait %steal %idle +# 11:07:44 all 3.20 0.10 1.60 0.00 0.00 95.10 +# +# version 10.x output +# 04:50:52 PM CPU %user %nice %system %iowait %steal %idle +# 04:50:57 PM all 0.31 0.00 0.31 0.00 0.00 99.38 +# +sar -f src/sa-sysstat-$file_version -u \ +| tee -a $seq.full \ +| sed -n '/^[0-2][0-9]:/{ +s/^00\(:..:..\) PM/12\1/ +s/^01\(:..:..\) PM/13\1/ +s/^02\(:..:..\) PM/14\1/ +s/^03\(:..:..\) PM/15\1/ +s/^04\(:..:..\) PM/16\1/ +s/^05\(:..:..\) PM/17\1/ +s/^06\(:..:..\) PM/18\1/ +s/^07\(:..:..\) PM/19\1/ +s/^08\(:..:..\) PM/20\1/ +s/^09\(:..:..\) PM/21\1/ +s/^10\(:..:..\) PM/22\1/ +s/^11\(:..:..\) PM/23\1/ +s/^\(..:..:..\) AM/\1/ +p +}' \ +| $PCP_AWK_PROG >$tmp.sar ' +NR == 1 { next } + # percent to utilization + { for (i = 2; i <= NF; i++) { $i = $i / 100 } + print + }' + +echo "check user CPU time ..." +pmval -f 8 -t 5 -a $tmp kernel.all.cpu.user \ +| sed -n '/^[0-2][0-9]:/{ +s/\.[0-9][0-9][0-9]// +p +}' >$tmp.pcp +( echo ""; echo "kernel.all.cpu.user" ) >>$seq.full +cat $tmp.pcp >>$seq.full +paste $tmp.sar $tmp.pcp >$tmp.both +$PCP_AWK_PROG <$tmp.both ' +{ if ($3-$NF > 0.000001 || $3-$NF < -0.000001) print "[",NR,"] mismatch:",$1,$3,$NF }' + +echo +echo "check timestamps ..." +$PCP_AWK_PROG <$tmp.both ' +$1 != $9 { print "[",NR,"] mismatch:",$0 }' + +echo +echo "check sys CPU time ..." +# note sar's -u view of system is really sys+intr +# ... saved by derived metrics! +# also need to relax tolerance in comparison, 'cause sar seems to get +# the arithmetic "not quite right" (tm) +echo "system = kernel.all.cpu.sys + kernel.all.cpu.intr" >$tmp.config +export PCP_DERIVED_CONFIG=$tmp.config +pmval -f 8 -t 5 -a $tmp system \ +| sed -n '/^[0-2][0-9]:/{ +s/\.[0-9][0-9][0-9]// +p +}' >$tmp.pcp +( echo ""; echo "system = kernel.all.cpu.sys + kernel.all.cpu.intr" ) >>$seq.full +cat $tmp.pcp >>$seq.full +paste $tmp.sar $tmp.pcp >$tmp.both +$PCP_AWK_PROG <$tmp.both ' +{ if ($5-$NF > 0.001 || $5-$NF < -0.001) print "[",NR,"] mismatch:",$1,$5,$NF }' + +echo >>$seq.full +# version 9.x output +# 11:07:39 tps rtps wtps bread/s bwrtn/s +# 11:07:44 0.00 0.00 0.00 0.00 0.00 +# +# version 10.x output +# 04:50:52 PM tps rtps wtps bread/s bwrtn/s +# 04:50:57 PM 0.80 0.00 0.80 0.00 6.40 +# +sar -f src/sa-sysstat-$file_version -b \ +| tee -a $seq.full \ +| sed -n '/^[0-2][0-9]:/{ +s/^00\(:..:..\) PM/12\1/ +s/^01\(:..:..\) PM/13\1/ +s/^02\(:..:..\) PM/14\1/ +s/^03\(:..:..\) PM/15\1/ +s/^04\(:..:..\) PM/16\1/ +s/^05\(:..:..\) PM/17\1/ +s/^06\(:..:..\) PM/18\1/ +s/^07\(:..:..\) PM/19\1/ +s/^08\(:..:..\) PM/20\1/ +s/^09\(:..:..\) PM/21\1/ +s/^10\(:..:..\) PM/22\1/ +s/^11\(:..:..\) PM/23\1/ +s/^\(..:..:..\) AM/\1/ +p +}' \ +| $PCP_AWK_PROG >$tmp.sar ' +NR == 1 { next } + # blocks to Kbytes + { for (i = 5; i <= NF; i++) { $i = $i /2 } + print + }' + +echo +echo "check user disk iops ..." +# units are iops, so within 0.01 iop is ok +pmval -f 8 -t 5 -a $tmp disk.all.total \ +| sed -n '/^[0-2][0-9]:/{ +s/\.[0-9][0-9][0-9]// +p +}' >$tmp.pcp +( echo ""; echo "disk.all.total" ) >>$seq.full +cat $tmp.pcp >>$seq.full +paste $tmp.sar $tmp.pcp >$tmp.both +$PCP_AWK_PROG <$tmp.both ' +{ if ($2-$NF > 0.01 || $2-$NF < -0.01) print "[",NR,"] mismatch:",$1,$2,$NF }' + +echo +echo "check user disk write thruput ..." +# units are iops, so within 0.01 iop is ok +pmval -f 8 -t 5 -a $tmp disk.all.write_bytes \ +| sed -n '/^[0-2][0-9]:/{ +s/\.[0-9][0-9][0-9]// +p +}' >$tmp.pcp +( echo ""; echo "disk.all.write_bytes" ) >>$seq.full +cat $tmp.pcp >>$seq.full +paste $tmp.sar $tmp.pcp >$tmp.both +$PCP_AWK_PROG <$tmp.both ' +{ if ($6-$NF > 0.01 || $6-$NF < -0.01) print "[",NR,"] mismatch:",$1,$6,$NF }' + +echo +echo "full dump ..." +# note proc.nprocs -> proc.nproc mapping needed after sar2pcp changes in +# commit 48e373f0609a0a0804bc052d5e9dec41a5a2928e so output matches 370's +# "out" files +# +pmdumplog -lm -z $tmp 2>&1 \ +| sed \ + -e 's/245\.0\.[0-9][0-9]*/245.0.NN/g' \ + -e 's/(proc.nprocs)/(proc.nproc)/' + +# success, all done +exit |