File: 300

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 (133 lines) | stat: -rwxr-xr-x 3,742 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
#! /bin/sh
# PCP QA Test No. 300
# Change in handling of .NeedInstall and .NeedRemove protocols
#
# Copyright (c) 2005 Silicon Graphics, Inc.  All Rights Reserved.
#

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

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

status=0	# success is the default!
trap "_cleanup; exit \$status" 0 1 2 3 15

_cleanup()
{
    [ -f $PCP_LOG_DIR/NOTICES.qa.$seq ] && $sudo mv $PCP_LOG_DIR/NOTICES.qa.$seq $PCP_LOG_DIR/NOTICES
    _service pmcd restart 2>&1 | _filter_pcp_restart
    _wait_for_pmcd
    _restore_auto_restart pmcd
    _service pmlogger restart 2>&1 | _filter_pcp_restart \
    | sed -e '/pmlogger not running/d'
    _wait_for_pmlogger
    _wait_for_pmcd
    $sudo rm -rf $tmp.* $PCP_VAR_DIR/pmdas/bozo
}

# Usage: _check_need dir .Need<something>
#
_check_need()
{
    for file in $1/$2*
    do
	case "$file"
	in
	    *\*)
	    	echo "$2 missing"
		;;
	    *)
	    	echo "`echo "$file" | sed -e "s@^$1/@@"` present"
		;;
	esac
    done
}

# check if "auto.update" lock is already in place ... should not be, but
# if it is that implies something died badly before we got here
#
if [ -f $PCP_TMPFILE_DIR/pmda.auto.update ]
then
    echo "Arrgh: lock file is pre-existing!"
    ls -l $PCP_TMPFILE_DIR/pmda.auto.update
    exit
fi

$sudo rm -rf $PCP_VAR_DIR/pmdas/bozo
$sudo mkdir $PCP_VAR_DIR/pmdas/bozo
cat <<End-of-File >$tmp.sh
#!/bin/sh
# from PCP QA $seq

[ -f $PCP_VAR_DIR/pmdas/bozo/fail ] && exit 1
exit 0
End-of-File

$sudo cp $tmp.sh $PCP_VAR_DIR/pmdas/bozo/Install
$sudo cp $tmp.sh $PCP_VAR_DIR/pmdas/bozo/Remove
$sudo chmod 755 $PCP_VAR_DIR/pmdas/bozo/Install
$sudo chmod 755 $PCP_VAR_DIR/pmdas/bozo/Remove
$sudo rm -f $PCP_VAR_DIR/pmdas/bozo/.NeedInstall*
$sudo rm -f $PCP_VAR_DIR/pmdas/bozo/.NeedRemove*
$sudo touch $PCP_VAR_DIR/pmdas/bozo/.NeedInstall
$sudo touch $PCP_VAR_DIR/pmdas/bozo/fail
$sudo mv $PCP_LOG_DIR/NOTICES $PCP_LOG_DIR/NOTICES.qa.$seq

if ! _service pmlogger stop 2>&1; then _exit 1; fi \
| _filter_pcp_stop
_wait_pmlogger_end || _exit 1
if ! _service pmcd stop 2>&1; then _exit 1; fi \
| _filter_pcp_stop
_wait_pmcd_end || _exit 1

# real QA test starts here
echo "Install should fail"
if ! _service pmcd restart 2>&1; then _exit 1; fi | _filter_pcp_restart
_wait_for_pmcd || _exit 1
pmsleep 1.5	# give script time to execute
_check_need $PCP_VAR_DIR/pmdas/bozo .NeedInstall

echo
echo "Install should succeed"
$sudo rm -f $PCP_VAR_DIR/pmdas/bozo/.NeedInstall*
$sudo touch $PCP_VAR_DIR/pmdas/bozo/.NeedInstall
$sudo rm -f $PCP_VAR_DIR/pmdas/bozo/fail
if ! _service pmcd restart 2>&1; then _exit 1; fi | _filter_pcp_restart
_wait_for_pmcd || _exit 1
pmsleep 1.5	# give script time to execute
_check_need $PCP_VAR_DIR/pmdas/bozo .NeedInstall

echo
echo "Remove should fail"
$sudo rm -f $PCP_VAR_DIR/pmdas/bozo/.NeedRemove*
$sudo touch $PCP_VAR_DIR/pmdas/bozo/.NeedRemove
$sudo touch $PCP_VAR_DIR/pmdas/bozo/fail
if ! _service pmcd restart 2>&1; then _exit 1; fi | _filter_pcp_restart
_wait_for_pmcd || _exit 1
pmsleep 1.5	# give script time to execute
_check_need $PCP_VAR_DIR/pmdas/bozo .NeedRemove

echo
echo "Remove should succeed"
$sudo rm -f $PCP_VAR_DIR/pmdas/bozo/.NeedRemove*
$sudo touch $PCP_VAR_DIR/pmdas/bozo/.NeedRemove
$sudo rm -f $PCP_VAR_DIR/pmdas/bozo/fail
if ! _service pmcd restart 2>&1; then _exit 1; fi | _filter_pcp_restart
_wait_for_pmcd || _exit 1
pmsleep 1.5	# give script time to execute
_check_need $PCP_VAR_DIR/pmdas/bozo .NeedRemove

echo
echo "Check pmpost messages ..."
cat $PCP_LOG_DIR/NOTICES > $seq_full
grep -E '(Install|Remove).*bozo$' $PCP_LOG_DIR/NOTICES \
| sed \
    -e 's/^[0-9][0-9]*:[0-9][0-9]*:[0-9]*\.[0-9]* /TIME /' \
    -e 's/\(check for host \).*/\1HOSTNAME/'

# success, all done
exit