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
|