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
|
#!/bin/sh
# PCP QA Test No. 671
# test mkaf and pmafm with compressed archives
#
# Copyright (c) 2018 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
if which xz >/dev/null 2>&1
then
PROG=xz
SUFF=xz
elif which bzip2 >/dev/null 2>&1
then
PROG=bzip2
SUFF=bz2
elif which gzip >/dev/null 2>&1
then
PROG=gzip
SUFF=gz
else
_notrun "cannot find a compression program!"
fi
_cleanup()
{
cd $here
$sudo rm -rf $tmp $tmp.*
}
_filter()
{
sed \
-e "s@$tmp@TMP@g" \
# end
}
_filter2_pmafm()
{
$PCP_AWK_PROG '$1 == "Archive:" {if ($4 != "OK") {print $0}}'
}
_filter_pmafm()
{
# Need to sort lines in this block
#
# Ordinal Hostname Archive Basename
# [ 1] bozo ./multivol/20011002 <- start here
# [ 2] snort ./onevol/20011002 <-- end here
#
host=`hostname`
tee -a $seq_full \
| tee $tmp.tmp \
| sed \
-e "s@$tmp@TMP@g" \
-e 's/\[ *[0-9][0-9]*]/[N]/' \
-e '/^Created:/{
s/'"$host"'/HOSTNAME/
s/ at .*/ at DATE/
}' \
-e '/^Creator:/s/:.*/: .../' \
-e '/^Folio Directory:/s/:.*/: .../' \
-e '/^PCP Archive Folio:/s/:.*/: .../' \
| $PCP_AWK_PROG '
BEGIN { part = 1 }
part == 2 && NF == 0 { part = 3 }
{ print >"'$tmp.out.'" part }
part == 1 && $1 == "Ordinal" { part = 2 }'
if [ -f $tmp.out.1 ]
then
cat $tmp.out.1
else
echo "Arrgh ... part 1 from pmafm output missing (full output follows)"
cat $tmp.tmp
fi
if [ -f $tmp.out.2 ]
then
sort $tmp.out.2
else
echo "Arrgh ... part 2 from pmafm output missing (full output follows)"
cat $tmp.tmp
fi
if [ -f $tmp.out.3 ]
then
cat $tmp.out.3
fi
}
status=1 # failure is the default!
trap "_cleanup; exit \$status" 0 1 2 3 15
# setup the log farm
#
cat <<End-of-File >$tmp.farm
onevol archives/snort-disks 20011002
onevol archives/moomba.client 20011003
multivol archives/ok-mv-bar 20011002
End-of-File
mkdir $tmp
if ./mk.logfarm -c $tmp.farm $tmp >$tmp.out 2>&1
then
_filter <$tmp.out
else
cat $tmp.out
echo "Arrgh ... mk.logfarm failed!"
exit
fi
# real QA test starts here
cd $tmp
echo "=== uncompressed archives ==="
for arg in . onevol/20011002.0 multivol/20011002.0
do
echo
echo "--- $arg ---"
mkaf $arg >folio
pmafm folio list | _filter_pmafm
pmafm folio check | _filter2_pmafm
pmafm folio pminfo -f pmcd.pmlogger.host
done
echo
echo "=== archives with compressed data volumes ==="
find * -name "*.[0-9]" -print \
| while read file
do
$PROG $file
done
for arg in . onevol/20011002.0.$SUFF multivol/20011002.0.$SUFF
do
echo
echo "--- $arg ---"
mkaf $arg >folio
pmafm folio list | _filter_pmafm
pmafm folio check | _filter2_pmafm
pmafm folio pminfo -f pmcd.pmlogger.host
done
# success, all done
status=0
exit
|