summaryrefslogtreecommitdiff
path: root/qa/241
diff options
context:
space:
mode:
Diffstat (limited to 'qa/241')
-rwxr-xr-xqa/241147
1 files changed, 147 insertions, 0 deletions
diff --git a/qa/241 b/qa/241
new file mode 100755
index 0000000..c95dc98
--- /dev/null
+++ b/qa/241
@@ -0,0 +1,147 @@
+#!/bin/sh
+# PCP QA Test No. 241
+# mmv pmda exerciser ... Martin's test case that was failing
+# mmv install/cleanup borrowed from 647
+#
+# Copyright (c) 2009 Silicon Graphics, Inc. All Rights Reserved.
+# Copyright (c) 2009 Ken McDonell. All Rights Reserved.
+#
+
+seq=`basename $0`
+echo "QA output created by $seq"
+
+# get standard filters
+. ./common.product
+. ./common.filter
+. ./common.check
+
+perl -e "use PCP::MMV" >/dev/null 2>&1
+[ $? -eq 0 ] || _notrun "perl PCP::MMV module not installed"
+
+rm -f $seq.out
+if [ $PCP_VER -lt 3600 ]
+then
+ ln $seq.out.1 $seq.out || exit 1
+else
+ ln $seq.out.2 $seq.out || exit 1
+fi
+
+status=0 # success is the default!
+done_clean=false
+MMV_STATS_DIR="$PCP_TMP_DIR/mmv"
+SAVE_MMV_STATS_DIR="$PCP_TMP_DIR/mmv.$seq"
+
+$sudo rm -rf $tmp.*
+
+# for QA the default install for mmv PMDA is as a dso, not a daemon
+#
+cat <<End-of-File >$tmp.input
+b
+dso
+End-of-File
+
+_cleanup()
+{
+ if $done_clean
+ then
+ :
+ else
+ [ -f $tmp.pmcd.conf ] && $sudo mv $tmp.pmcd.conf $PCP_PMCDCONF_PATH
+ [ -d $SAVE_MMV_STATS_DIR ] && $sudo rm -fr "$MMV_STATS_DIR"
+ [ -d $SAVE_MMV_STATS_DIR ] && $sudo mv $SAVE_MMV_STATS_DIR $MMV_STATS_DIR
+ $sudo $PCP_RC_DIR/pcp restart | _filter_pcp_start
+ _wait_for_pmcd
+ _wait_for_pmlogger
+ if $install_on_cleanup
+ then
+ ( cd $PCP_PMDAS_DIR/mmv; $sudo ./Install <$tmp.input >/dev/null 2>&1 )
+ else
+ ( cd $PCP_PMDAS_DIR/mmv; $sudo ./Remove </dev/null >/dev/null 2>&1 )
+ fi
+ rm -f $tmp.*
+ done_clean=true
+ fi
+ exit $status
+}
+
+install_on_cleanup=false
+pminfo mmv >/dev/null 2>&1 && install_on_cleanup=true
+
+trap "_cleanup" 0 1 2 3 15
+
+home="$PCP_PMDAS_DIR"
+iam=mmv
+if [ ! -d "$home/$iam" ]
+then
+ echo "Where is $home/$iam?"
+ exit 1
+fi
+cd "$home/$iam"
+unset ROOT MAKEFLAGS
+
+# copy the pmcd config file to restore state later.
+cp $PCP_PMCDCONF_PATH "$tmp.pmcd.conf"
+# move the MMV directory to restore contents later.
+[ -d $MMV_STATS_DIR ] && $sudo mv -f $MMV_STATS_DIR $SAVE_MMV_STATS_DIR
+
+# start from a known starting point
+$sudo ./Remove >/dev/null 2>&1
+
+$sudo mkdir "$MMV_STATS_DIR" 2>/dev/null
+$sudo chmod 1777 "$MMV_STATS_DIR" 2>/dev/null
+
+cat <<'End-of-File' >$tmp.perl
+use strict;
+use warnings;
+use PCP::MMV;
+
+my @indoms = ();
+my @metrics = (
+ ['export_value',
+ 1, MMV_TYPE_U64, MMV_INDOM_NULL,
+ mmv_units(0,0,0,0,0,0), MMV_SEM_INSTANT,
+ 'A counter of some value', ''
+ ]
+);
+
+my $handle = mmv_stats_init('mymmv', 0, MMV_FLAG_PROCESS, \@metrics, \@indoms);
+die ("mmv_stats_init failed\n") unless (defined($handle));
+
+while (my $line = <STDIN>) {
+ print $line;
+ next if not $line =~ /^new value:/;
+
+ my $val;
+ ($val = $line) =~ s/^new value: (\d+)/$1/;
+ chomp $val;
+ mmv_stats_set($handle, 'export_value', '', $val);
+}
+End-of-File
+
+# real QA test starts here
+
+echo
+echo "=== $iam agent installation ==="
+$sudo ./Install -e <$tmp.input >$tmp.out 2>&1
+_filter_pmda_install <$tmp.out
+
+value=5
+for i in 1 2 3 4
+do
+ echo "new value: $value"
+ value=`expr $value + 1`
+ sleep 1
+ [ "$i" = 1 ] && pmval -t 0.5sec -s 20 mmv.mymmv.export_value >$tmp.out 2>&1 &
+ sleep 1
+done \
+| perl $tmp.perl
+
+
+wait
+
+echo "Filtered pmval output ..."
+grep '^[a-z]' $tmp.out | sed -e '/^host:.*$/s/.*/HOST/'
+grep '^[^a-z]' $tmp.out | LC_COLLATE=POSIX sort -u
+
+# success, all done
+exit