summaryrefslogtreecommitdiff
path: root/qa/647
blob: 6427f7c30989f7948ba0a32b8e49358dc6239bc2 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
#! /bin/sh
# PCP QA Test No. 647
# Install/Remove for Memory Mapped Value PMDA
#
# Copyright (c) 2009 Aconex.  All Rights Reserved.
#

seq=`basename $0`
echo "QA output created by $seq"

# get standard filters
. ./common.product
. ./common.filter
. ./common.check

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=1
username=`id -u -n`
done_clean=false
MMV_STATS_DIR="$PCP_TMP_DIR/mmv"

# 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
	if [ -d $tmp.mmv.dir ]
	then
	    $sudo rm -fr "$MMV_STATS_DIR"
	    $sudo mv $tmp.mmv.dir $MMV_STATS_DIR
	fi
	$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

_filter_mmv_values()
{
    sed -e \
	's/"eggs"\] value .*/"eggs"] value USEC/g'
}

# real QA test starts here
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 $tmp.mmv.dir

# start from a known starting point
$sudo ./Remove >/dev/null 2>&1

# create a directory we can write and pcp group can read
$sudo mkdir -m 755 "$MMV_STATS_DIR"
$sudo chown $username "$MMV_STATS_DIR"
$sudo chgrp pcp "$MMV_STATS_DIR"

echo
echo "=== $iam agent installation ==="
$sudo ./Install </dev/null >$tmp.out 2>&1
_filter_pmda_install <$tmp.out

$here/src/mmv_genstats

echo
echo "=== validate values ==="
if pminfo $iam | LC_COLLATE=POSIX sort >$tmp.names
then
    for name in `cat $tmp.names`
    do
	pminfo -fdmtT $name | _filter_mmv_values
    done
else
    echo "... failed! ... here is the Install log ..."
    cat $tmp.out
fi

$here/src/mmv_noinit

echo
echo "=== validate metrics ==="
if pminfo $iam | LC_COLLATE=POSIX sort >$tmp.names
then
    for name in `cat $tmp.names`
    do
	pminfo -fdmtT $name
    done
else
    echo "... failed! ... here is the Install log ..."
    cat $tmp.out
fi

echo
echo "=== remove $iam agent ==="
$sudo ./Remove >$tmp.out 2>&1
_filter_pmda_remove <$tmp.out

echo
echo "=== $iam agent re-installation ==="
$sudo ./Install <$tmp.input >$tmp.out 2>&1
_filter_pmda_install <$tmp.out

status=0
exit