diff options
Diffstat (limited to 'qa/241')
-rwxr-xr-x | qa/241 | 147 |
1 files changed, 147 insertions, 0 deletions
@@ -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 |