summaryrefslogtreecommitdiff
path: root/qa/973
diff options
context:
space:
mode:
Diffstat (limited to 'qa/973')
-rwxr-xr-xqa/97399
1 files changed, 99 insertions, 0 deletions
diff --git a/qa/973 b/qa/973
new file mode 100755
index 0000000..82b2575
--- /dev/null
+++ b/qa/973
@@ -0,0 +1,99 @@
+#!/bin/sh
+# PCP QA Test No. 973
+# Exercise the zswap PMDA using the running kernel.
+#
+# Copyright (c) 2014 Red Hat.
+#
+
+seq=`basename $0`
+echo "QA output created by $seq"
+
+# get standard environment, filters and checks
+. ./common.product
+. ./common.filter
+. ./common.check
+
+test -d /sys/kernel/debug/zswap || _notrun "No kernel support for zswap"
+
+status=1 # failure is the default!
+done_clean=false
+rm -f $seq.full
+
+install_on_cleanup=false
+pminfo zstat >/dev/null 2>&1 && install_on_cleanup=true
+
+_cleanup()
+{
+ if $done_clean
+ then
+ :
+ else
+ [ -f $tmp.pmcd.conf ] && $sudo mv $tmp.pmcd.conf $PCP_PMCDCONF_PATH
+ rm -f $tmp.*
+ $sudo $PCP_RC_DIR/pcp restart | _filter_pcp_start
+ _wait_for_pmcd
+ _wait_for_pmlogger
+ if $install_on_cleanup
+ then
+ ( cd $PCP_PMDAS_DIR/zswap; $sudo ./Install </dev/null >/dev/null 2>&1 )
+ else
+ ( cd $PCP_PMDAS_DIR/zswap; $sudo ./Remove >/dev/null 2>&1 )
+ fi
+ done_clean=true
+ fi
+}
+
+trap "_cleanup; exit \$status" 0 1 2 3 15
+
+_filter_zswap()
+{
+ # filter metric values for deterministic output
+ tee -a $here/$seq.full | sed \
+ -e 's/value [0-9][0-9]*/value NUMBER/'
+}
+
+# real QA test starts here
+home=$PCP_PMDAS_DIR
+iam=zswap
+cd $home/$iam
+unset ROOT MAKEFLAGS
+
+# copy the pmcd config file to restore state later.
+cp $PCP_PMCDCONF_PATH $tmp.pmcd.conf
+
+# start from a known starting point
+$sudo ./Remove >/dev/null 2>&1
+$sudo $PCP_RC_DIR/pmcd stop
+
+echo
+echo "=== $iam agent installation ==="
+$sudo ./Install </dev/null >$tmp.out 2>&1
+# Check zswap metrics have appeared ... X metrics and Y values
+_filter_pmda_install <$tmp.out \
+| sed \
+ -e '/^Waiting for pmcd/s/\.\.\.[. ]*$/DOTS/' \
+ -e 's/[0-9][0-9]* warnings, //' \
+| $PCP_AWK_PROG '
+/Check zswap metrics have appeared/ { if ($7 >= 8 && $7 <= 20) $7 = "X"
+ if ($10 >= 8 && $10 <= 20) $10 = "Y"
+ }
+ { print }'
+
+# pmcd should have been started by the Install process - check
+if pminfo -v $iam > $tmp.info 2> $tmp.err
+then
+ :
+else
+ echo "... failed! ... here is the Install log ..."
+ cat $tmp.out
+fi
+cat $tmp.info $tmp.err | _filter_zswap
+
+echo
+echo "=== remove $iam agent ==="
+$sudo ./Remove >$tmp.out 2>&1
+_filter_pmda_remove <$tmp.out
+
+# success, all done
+status=0
+exit