summaryrefslogtreecommitdiff
path: root/qa/370
diff options
context:
space:
mode:
authorIgor Pashev <pashev.igor@gmail.com>2014-10-26 12:33:50 +0400
committerIgor Pashev <pashev.igor@gmail.com>2014-10-26 12:33:50 +0400
commit47e6e7c84f008a53061e661f31ae96629bc694ef (patch)
tree648a07f3b5b9d67ce19b0fd72e8caa1175c98f1a /qa/370
downloadpcp-47e6e7c84f008a53061e661f31ae96629bc694ef.tar.gz
Debian 3.9.10debian/3.9.10debian
Diffstat (limited to 'qa/370')
-rwxr-xr-xqa/370215
1 files changed, 215 insertions, 0 deletions
diff --git a/qa/370 b/qa/370
new file mode 100755
index 0000000..69dc7ca
--- /dev/null
+++ b/qa/370
@@ -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