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
|
#!/bin/sh
# PCP QA Test No. 805
# Exercise the postfix PMDA.
#
# Copyright (c) 2015 Red Hat. All Rights Reserved.
#
seq=`basename $0`
echo "QA output created by $seq"
# get standard environment, filters and checks
. ./common.product
. ./common.filter
. ./common.check
[ -f "$PCP_PMDAS_DIR/postfix/pmdapostfix.pl" ] || _notrun "No postfix PMDA"
if which qshape >/dev/null 2>&1
then
:
else
# not on the $PATH, but qshape is hiding on SuSE platforms
#
[ -f /usr/share/doc/packages/postfix-doc/auxiliary/qshape/qshape.pl ] \
|| _notrun "No qshape binary installed"
fi
status=1 # failure is the default!
# prepare the PMDAs test environment
cp $here/postfix/qshape.sh $tmp.qshape
grp=root
case $PCP_PLATFORM
in
freebsd|netbsd|openbsd)
grp=wheel
;;
esac
$sudo chown root:$grp $tmp.qshape
$sudo chmod 755 $tmp.qshape
touch $tmp.logfile
PMDA_POSTFIX_LOG=$tmp.logfile; export PMDA_POSTFIX_LOG
PMDA_POSTFIX_REFRESH=1; export PMDA_POSTFIX_REFRESH
PMDA_POSTFIX_QSHAPE=$tmp.qshape; export PMDA_POSTFIX_QSHAPE
# don't want Install to possibly restart pmcd via systemctl, as this
# will clobber the environment, ...
#
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
if [ "$PCPQA_SYSTEMD" = x -o "${PCPQA_SYSTEMD-x}" != x ]
then
# $PCPQA_SYSTEMD is already set ...
save_pcpqa_systemd="$PCPQA_SYSTEMD"
restore_pcpqa_systemd=true
else
restore_pcpqa_systemd=false
fi
PCPQA_SYSTEMD=no; export PCPQA_SYSTEMD
pmdapostfix_remove()
{
echo | tee -a $seq_full
echo "=== remove postfix agent ===" | tee -a $seq_full
$sudo ./Remove >$tmp.out 2>&1
cat $tmp.out >>$seq_full
_filter_pmda_remove <$tmp.out
}
pmdapostfix_install()
{
# start from known starting points
cd $PCP_PMDAS_DIR/postfix
$sudo ./Remove >/dev/null 2>&1
echo | tee -a $seq_full
echo "=== postfix agent installation ===" | tee -a $seq_full
$sudo ./Install </dev/null >$tmp.out 2>&1
cat $tmp.out >>$seq_full
# Check postfix metrics have appeared ... X metrics and Y values
_filter_pmda_install <$tmp.out \
| sed \
-e 's/[0-9][0-9]* warnings, //' \
| $PCP_AWK_PROG '
/Check postfix metrics have appeared/ { if ($7 >= 7) $7 = "X"
if ($10 >= 50) $10 = "Y"
}
{ print }'
}
_cleanup()
{
if $restore_pcpqa_systemd
then
PCPQA_SYSTEMD="$save_pcpqa_systemd"; export PCPQA_SYSTEMD
else
unset PCPQA_SYSTEMD
fi
# note: _restore_auto_restart pmcd done in _cleanup_pmda()
_cleanup_pmda postfix
}
_prepare_pmda postfix
trap "_cleanup; exit \$status" 0 1 2 3 15
_stop_auto_restart pmcd
# real QA test starts here
pmdapostfix_install
metrics=`pminfo postfix | LC_COLLATE=POSIX sort`
for file in $here/postfix/*-log-*gz
do
pmsleep 1.25
logfile=`basename $file`
gunzip < $file > $tmp.logfile
echo "=== verify postfix values - $logfile ===" | tee -a $seq_full
pminfo -f $metrics
echo "=== done ===" | tee -a $seq_full
echo | tee -a $seq_full
done
$sudo rm -f $tmp.logfile $tmp.qshape
echo "PMDA log file ..." >>$seq_full
$sudo cat $PCP_LOG_DIR/pmcd/postfix.log >>$seq_full
pmdapostfix_remove
status=0
exit
|