File: 1196

package info (click to toggle)
pcp 7.1.0-1
  • links: PTS
  • area: main
  • in suites: forky, sid
  • size: 252,748 kB
  • sloc: ansic: 1,483,656; sh: 182,366; xml: 160,462; cpp: 83,813; python: 24,980; perl: 18,327; yacc: 6,877; lex: 2,864; makefile: 2,738; awk: 165; fortran: 60; java: 52
file content (182 lines) | stat: -rwxr-xr-x 5,030 bytes parent folder | download
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
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
#!/bin/sh
# PCP QA Test No. 1096
# Exercise tigher checks for domain/name matching in pmdaproc.sh
# for PMDA Install/Remove operations
#
# Copyright (c) 2017 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

_cleanup()
{
    if $done_clean
    then
	:
    else
	# need to Remove whack to cleanse the PMNS
	#
	cd ..
	[ -d sample ] && mv sample whacko
	cd whacko
	$sudo ./Remove 2>&1 | _filter_cull
	rm -f domain.h pmdawhacko help.pag help.dir
	# put pmcd.conf back
	#
	_restore_config $PCP_PMCDCONF_PATH
	_service pmcd restart 2>&1 | _filter_pcp_restart
	_wait_for_pmcd
	_service pmlogger restart 2>&1 | _filter_pcp_restart
	_wait_for_pmlogger
	# reinstall the sample PMDA ... the PMNS will have been trashed
	#
	cd $PCP_VAR_DIR/pmdas/sample
	$sudo ./Install </dev/null >>$seq_full
	done_clean=true
    fi
    cd $here
    $sudo rm -rf $tmp $tmp.* $here/$seq.dir
    exit $status
}

_fixup()
{
    $sudo cp $PCP_PMCDCONF_PATH.$seq $PCP_PMCDCONF_PATH
    if ! _service pmcd restart 2>&1; then _exit 1; fi | _filter_pcp_restart
    _wait_for_pmcd || _exit 1
}

status=1	# failure is the default!
$sudo rm -rf $here/$seq.dir
trap "_cleanup; exit \$status" 0 1 2 3 15
done_clean=false
_save_config $PCP_PMCDCONF_PATH

_filter()
{
    sed \
	-e '/value/s/[0-9][0-9]*/NUMBER/' \
    # end
}

# Handle lines like ...
# Warning: /etc/pcp/pmcd/pmcd.conf[7] culling entry ...
# and this one where the quoting may differ from one platform to the next
# make: Nothing to be done for 'install'. 
# make: Nothing to be done for 'install'. 
# gmake: Nothing to be done for `install'.
#
_filter_cull()
{
    sed \
	-e '/Warning:/{
s@'"$PCP_PMCDCONF_PATH"'@PCP_PMCDCONF_PATH@
s/\[[0-9][0-9]*]/[N]/
}' \
	-e 's/^gmake:/make:/' \
	-e "/Nothing to be done/s/.install./'install'/" \
    # end
}

if mkdir -p $here/$seq.dir/pmdas/whacko
then
    :
else
    echo "Arrgh: cannot mkdir $here/$seq.dir/pmdas/whacko"
    exit
fi
cp pmdas/whacko/* $here/$seq.dir/pmdas/whacko
cd $here/$seq.dir/pmdas/whacko
if [ -f GNUmakefile.install ]
then
    # running from a git tree, not the testsuite directory, so use
    # the installed makefile that does nothing
    #
    mv GNUmakefile.install GNUmakefile
fi

# we need the trivial PMDA ... the "whacko" PMDA uses this executable
#
if [ ! -x $PCP_VAR_DIR/pmdas/trivial/pmdatrivial ]
then
    ( cd $PCP_VAR_DIR/pmdas/trivial; $sudo $PCP_MAKE_PROG pmdatrivial ) >>$seq_full
    if [ ! -x $PCP_VAR_DIR/pmdas/trivial/pmdatrivial ]
    then
	echo "Arrgh: cannot make $PCP_VAR_DIR/pmdas/pmdatrivial"
	exit
    fi
fi

# Now copy the trivial PMDA executable here
#
rm -f pmdawhacko
cp $PCP_VAR_DIR/pmdas/trivial/pmdatrivial pmdawhacko

# real QA test starts here

# borrow ../schizo's domain
#
echo '#define WHACKO 241' >domain.h

( echo "--- initial state"; cat $PCP_PMCDCONF_PATH ) >>$seq_full

echo "=== no-error case ===" | tee -a $seq_full
$sudo ./Install </dev/null 2>&1 | _filter_cull
( echo "--- after Install"; cat $PCP_PMCDCONF_PATH ) >>$seq_full
pminfo -mf whacko | _filter
pminfo -f pmcd.agent.status | grep -E 'whacko|sample'
$sudo ./Remove 2>&1 | _filter_cull
( echo "--- after Remove"; cat $PCP_PMCDCONF_PATH ) >>$seq_full
pminfo -mf whacko | _filter
pminfo -f pmcd.agent.status | grep -E 'whacko|sample'

echo | tee -a $seq_full
echo "=== domain number clash case ... will clobber and remove sample PMDA ===" | tee -a $seq_full
# borrow sample PMDA's domain
echo '#define WHACKO 29' >domain.h
$sudo ./Install </dev/null 2>&1 | _filter_cull
( echo "--- after Install"; cat $PCP_PMCDCONF_PATH ) >>$seq_full
pminfo -mf whacko | _filter
pminfo -f pmcd.agent.status | grep -E 'whacko|sample'
$sudo ./Remove 2>&1 | _filter_cull
( echo "--- after Remove"; cat $PCP_PMCDCONF_PATH ) >>$seq_full
pminfo -mf whacko | _filter
pminfo -f pmcd.agent.status | grep -E 'whacko|sample'

# Reinstate pmcd.conf and reinstall the sample PMDA ... the PMNS will
# have been trashed, so putting pmcd.conf is not enough.
# Note we have to do this again after the next test (before exiting)
# in _cleanup()
#
_fixup >>$seq_full
( cd $PCP_VAR_DIR/pmdas/sample; $sudo ./Install </dev/null ) >>$seq_full

# for this one, we need the parent directory to be called sample, not
# whacko to dodge a check in pmdaproc.sh
#
cd ..
mv whacko sample
cd sample
echo | tee -a $seq_full
echo "=== domain name clash case ... will clobber and remove sample PMDA ===" | tee -a $seq_full
# borrow ../schizo's domain again
#
echo '#define WHACKO 241' >domain.h
$sudo sh -c "iam=sample ./Install" </dev/null 2>&1 | _filter_cull
( echo "--- after Install"; cat $PCP_PMCDCONF_PATH ) >>$seq_full
pminfo -mf whacko | _filter
pminfo -f pmcd.agent.status | grep -E 'whacko|sample'
$sudo sh -c "iam=sample ./Remove" 2>&1 | _filter_cull
( echo "--- after Remove"; cat $PCP_PMCDCONF_PATH ) >>$seq_full
pminfo -mf whacko | _filter
pminfo -f pmcd.agent.status | grep -E 'whacko|sample'

# success, all done
status=0
exit