This file is indexed.

/var/lib/pcp/testsuite/1196 is in pcp-testsuite 4.0.1-1.

This file is owned by root:root, with mode 0o755.

The actual contents of the file can be viewed below.

  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 pcp restart | _filter_pcp_start
	_wait_for_pmcd
	_wait_for_pmlogger
	# reinstall the sample PMDA ... the PMNS will have been trashed
	#
	cd $PCP_VAR_DIR/pmdas/sample
	sudo ./Install </dev/null >>$here/$seq.full
	done_clean=true
    fi
    cd $here
    $sudo rm -rf $tmp $tmp.*
    exit $status
}

_fixup()
{
    $sudo cp $PCP_PMCDCONF_PATH.$seq $PCP_PMCDCONF_PATH
    _service pmcd restart | _filter_pcp_start
    _wait_for_pmcd
}

status=1	# failure is the default!
$sudo rm -rf $tmp $tmp.* $seq.full
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 $tmp/pmdas/whacko
then
    :
else
    echo "Arrgh: cannot mkdir $tmp/pmdas/whacko"
    ls -ld $tmp
    exit
fi
cp pmdas/whacko/* $tmp/pmdas/whacko
cd $tmp/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 make pmdatrivial ) >>$here/$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 ) >>$here/$seq.full

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

echo | tee -a $here/$seq.full
echo "=== domain number clash case ... will clobber and remove sample PMDA ===" | tee -a $here/$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 ) >>$here/$seq.full
pminfo -mf whacko | _filter
pminfo -f pmcd.agent.status | egrep 'whacko|sample'
$sudo ./Remove 2>&1 | _filter_cull
( echo "--- after Remove"; cat $PCP_PMCDCONF_PATH ) >>$here/$seq.full
pminfo -mf whacko | _filter
pminfo -f pmcd.agent.status | egrep '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 >>$here/$seq.full
( cd $PCP_VAR_DIR/pmdas/sample; $sudo ./Install </dev/null ) >>$here/$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 $here/$seq.full
echo "=== domain name clash case ... will clobber and remove sample PMDA ===" | tee -a $here/$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 ) >>$here/$seq.full
pminfo -mf whacko | _filter
pminfo -f pmcd.agent.status | egrep 'whacko|sample'
$sudo sh -c "iam=sample ./Remove" 2>&1 | _filter_cull
( echo "--- after Remove"; cat $PCP_PMCDCONF_PATH ) >>$here/$seq.full
pminfo -mf whacko | _filter
pminfo -f pmcd.agent.status | egrep 'whacko|sample'

# success, all done
status=0
exit