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
|
#!/bin/sh
# PCP QA Test No. 1335
# simplest V3 archive test
# non-valgrind variant, see qa/1336 for the valgrind variant
#
# Copyright (c) 2021 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
eval `$PCP_BINADM_DIR/pmconfig -L -s v3_archives`
[ "$v3_archives" = true ] || _notrun "No V3 archive support"
do_valgrind=false
if [ "$1" = "--valgrind" ]
then
_check_valgrind
do_valgrind=true
elif which valgrind >/dev/null 2>&1
then
[ $PCPQA_VALGRIND = both ] || \
_notrun "valgrind variant qa/1336 will be run"
fi
_cleanup()
{
cd $here
$sudo rm -rf $tmp $tmp.*
}
status=0 # success is the default!
trap "_cleanup; exit \$status" 0 1 2 3 15
_filter()
{
rm -f $tmp.sed
touch $tmp.sed
tstamp=1
tee -a $seq_full \
| sed >$tmp.tmp \
-e "s@$tmp@TMP@g" \
-e '/commencing/s/ing .*/ing DATE/' \
-e '/ending/s/ing .*/ing DATE/' \
-e '/^PID for pmlogger:/s/ [0-9][0-9]*/ PID/' \
-e '/^[0-2][0-9]:/{
s/ [0-9][0-9][0-9][0-9]/OFFSET/g
s/ [0-9][0-9][0-9]/OFFSET/g
}' \
# end
sed -n <$tmp.tmp \
-e 's/.*\([0-9][0-9]:[0-9][0-9]:[0-9][0-9].[0-9][0-9]*[0-9]\).*/\1/p' \
| LC_COLLATE=POSIX sort -u \
| while read time
do
case "$time"
in
*000) # nsec precision, but usec value
time=`echo "$time" | sed -e 's/\(.*\)000/\1/'`
;;
esac
if grep $time $tmp.sed >/dev/null
then
:
else
# new timestamp, match optionally with trailing zeroes
echo "s/${time}0*/TIMESTAMP-$tstamp/g" >>$tmp.sed
tstamp=`expr $tstamp + 1`
fi
done
cat $tmp.sed >>$seq_full
sed -f $tmp.sed <$tmp.tmp
}
cat <<End-of-File >$tmp.config
log mandatory on 100 msec {
sample.long
}
End-of-File
pmstore sample.long.write_me 13 >>$seq_full
# real QA test starts here
for version in 2 3
do
if $do_valgrind
then
_run_valgrind pmlogger -V $version -c $tmp.config -l $tmp.log -s 1 $tmp.$version 2>&1 \
| sed -e "s@$tmp@TMP@g"
else
pmlogger -V $version -c $tmp.config -l $tmp.log -s 1 $tmp.$version
fi
cat $tmp.log >>$seq_full
ls -l $tmp.$version.index $tmp.$version.meta $tmp.$version.0 >>$seq_full
if $do_valgrind
then
_run_valgrind pmdumplog -lt $tmp.$version sample 2>&1 \
| _filter >$tmp.$version.dump
else
pmdumplog -lt $tmp.$version sample \
| _filter >$tmp.$version.dump
fi
cat $tmp.$version.dump >>$seq_full
if $do_valgrind
then
_run_valgrind pmloglabel -L $tmp.$version 2>&1 \
| _filter >$tmp.$version.label
else
pmloglabel -L $tmp.$version \
| _filter >$tmp.$version.label
fi
cat $tmp.$version.label >>$seq_full
done
echo "=== pmdumplog diffs ==="
diff $tmp.*.dump
echo "=== pmloglabel diffs ==="
diff $tmp.*.label
# success, all done
exit
|