summaryrefslogtreecommitdiff
path: root/qa/489
diff options
context:
space:
mode:
Diffstat (limited to 'qa/489')
-rwxr-xr-xqa/489105
1 files changed, 105 insertions, 0 deletions
diff --git a/qa/489 b/qa/489
new file mode 100755
index 0000000..b1217cc
--- /dev/null
+++ b/qa/489
@@ -0,0 +1,105 @@
+#!/bin/sh
+# PCP QA Test No. 489
+# exercise pmdaCacheStoreKey()
+#
+# 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 "$sudo rm -f $tmp.* $PCP_VAR_DIR/config/pmda/42.42; exit \$status" 0 1 2 3 15
+
+# real QA test starts here
+for arg in -k '' -d '-l -Dindom' -dk '-l -Dindom'
+do
+ echo | tee -a $seq.full
+ echo "=== keycache $arg ===" | tee -a $seq.full
+
+ case "$arg"
+ in
+ -l*)
+ ;;
+ *)
+ $sudo rm -f $PCP_VAR_DIR/config/pmda/42.42
+ ;;
+ esac
+
+ $sudo src/keycache $arg >$tmp.out 2>&1
+ cat $tmp.out >>$seq.full
+
+ case "$arg"
+ in
+ -l*)
+ ;;
+ *)
+ echo "First few lines of output ..."
+ head -20 $tmp.out
+ echo
+ echo "Duplicate instance ids ... expect none"
+ sed -n <$tmp.out \
+ -e '/pmdaCacheDump:/q' \
+ -e '/active 0x0/s//active (nil)/' \
+ -e '/ -> /s/ -> .*//p' \
+ | sort \
+ | uniq -c \
+ | grep -v ' 1 '
+ ;;
+ esac
+
+ case "$arg"
+ in
+ -d*|-l*)
+ $PCP_AWK_PROG <$tmp.out '
+/pmdaCacheDump:/ { want = 1 }
+want == 1 { print }' \
+ | sed -e '/active 0x0/s//active (nil)/'
+ ;;
+
+ *)
+ echo
+ echo "Check distribution ..."
+ $PCP_AWK_PROG <$tmp.out '
+/Instances distribution across/ { want=1
+ nb = $4
+ if ($4 <= 8) {
+ minp = 0.95 * (1 / nb)
+ maxp = 1.05 * (1 / nb)
+ }
+ else if ($4 <= 16) {
+ minp = 0.90 * (1 / nb)
+ maxp = 1.10 * (1 / nb)
+ }
+ else if ($4 <= 64) {
+ minp = 0.80 * (1 / nb)
+ maxp = 1.20 * (1 / nb)
+ }
+ else {
+ minp = 0.75 * (1 / nb)
+ maxp = 1.25 * (1 / nb)
+ }
+ print
+ next
+ }
+want == 1 && NF == 0 { want = 0 }
+want == 1 { for (i = 1; i <= NF; i++) {
+ if (minp <= $i && $i <= maxp)
+ printf "OK "
+ else
+ printf "%s not in (%.4f,%.4f) ",$i,minp,maxp
+ }
+ print ""
+ }'
+ ;;
+ esac
+ done
+
+# success, all done
+exit