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
|
#!/bin/sh
# PCP QA Test No. 1482
# System-V (non-systemctl) status checks
#
# Copyright (c) 2024 Ken McDonell. All Rights Reserved.
#
if [ $# -eq 0 ]
then
seq=`basename $0`
echo "QA output created by $seq"
else
# use $seq from caller, unless not set
[ -n "$seq" ] || seq=`basename $0`
echo "QA output created by `basename $0` $*"
fi
# get standard environment, filters and checks
. ./common.product
. ./common.filter
. ./common.check
[ "$PCPQA_SYSTEMD" = no ] || _notrun "using systemctl, not System-V init"
_cleanup()
{
cd $here
if [ ! -f $PCP_RUN_DIR/pmcd.pid ]
then
echo "Oops, pmcd not running as expected ... restarting"
_service pmcd start
_wait_for_pmcd
fi
if [ ! -f $PCP_RUN_DIR/pmlogger.pid ]
then
echo "Oops, pmlogger not running as expected ... restarting"
_service pmlogger start
_wait_for_pmlogger
fi
if $pmie_was_running
then
_service pmie start >>$seq_full 2>&1
_wait_for_pmie
elif [ -f $PCP_RUN_DIR/pmie.pid ]
then
_service pmie stop >>$seq_full 2>&1
_wait_pmie_end
fi
if $pmproxy_was_running
then
_service pmproxy start >>$seq_full 2>&1
_wait_for_pmproxy
elif [ -f $PCP_RUN_DIR/pmproxy.pid ]
then
_service pmproxy stop >>$seq_full 2>&1
_wait_pmproxy_end
fi
$sudo rm -rf $tmp $tmp.*
}
pmie_was_running=false
pmproxy_was_running=false
status=0 # success is the default!
trap "_cleanup; exit \$status" 0 1 2 3 15
_filter()
{
sed \
-e "s@$tmp@TMP@g" \
# end
}
# real QA test starts here
for svc in pmcd pmlogger pmie pmproxy
do
echo | tee -a $seq_full
echo "--- $svc stopping ---" | tee -a $seq_full
case "$svc"
in
pmcd)
if ! _service $svc stop >>$seq_full 2>&1; then _exit 1; fi
_wait_pmcd_end || _exit 1
;;
pmlogger)
if [ -f $PCP_RUN_DIR/pmlogger.pid ]
then
pid=`cat $PCP_RUN_DIR/pmlogger.pid`
if ! _service $svc stop >>$seq_full 2>&1; then _exit 1; fi
_wait_pmlogger_end $pid || _exit 1
fi
;;
pmie)
if [ -f $PCP_RUN_DIR/pmie.pid ]
then
pmie_was_running=true
if ! _service $svc stop >>$seq_full 2>&1; then _exit 1; fi
_wait_pmie_end || _exit 1
fi
;;
pmproxy)
if [ -f $PCP_RUN_DIR/pmproxy.pid ]
then
pmproxy_was_running=true
if ! _service $svc stop >>$seq_full 2>&1; then _exit 1; fi
_wait_pmproxy_end || _exit 1
fi
;;
esac
echo "--- $svc stopped ---" | tee -a $seq_full
if ! _service $svc status; then _exit 1; fi
echo "--- $svc starting ---" | tee -a $seq_full
case "$svc"
in
pmcd)
if ! _service $svc start >>$seq_full 2>&1; then _exit 1; fi
_wait_for_pmcd || _exit 1
;;
pmlogger)
if ! _service $svc start >>$seq_full 2>&1; then _exit 1; fi
_wait_for_pmlogger || _exit 1
;;
pmie)
if ! _service $svc start >>$seq_full 2>&1; then _exit 1; fi
_wait_for_pmie || _exit 1
;;
pmproxy)
if ! _service $svc start >>$seq_full 2>&1; then _exit 1; fi
_wait_for_pmproxy || _exit 1
;;
esac
echo "--- $svc started ---" | tee -a $seq_full
if ! _service $svc status; then _exit 1; fi
case "$svc"
in
pmcd|pmlogger)
;;
pmie)
if $pmie_was_running
then
if ! _service pmie start >>$seq_full 2>&1; then _exit 1; fi
_wait_for_pmie || _exit 1
pmie_was_running=false
fi
;;
pmproxy)
if $pmproxy_was_running
then
if ! _service pmproxy start >>$seq_full 2>&1; then _exit 1; fi
_wait_for_pmproxy || _exit 1
pmproxy_was_running=false
fi
;;
esac
done
# success, all done
exit
|