summaryrefslogtreecommitdiff
path: root/qa/566
blob: c49883dedb1c9bb43941fffefa0460bdf78f759d (plain)
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
#!/bin/sh
# PCP QA Test No. 566
# basic pmlogcheck workout
#
# Copyright (c) 2013 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

_notrun "pending reconciliation of old pmlogcheck with new pmlogcheck"

status=1	# failure is the default!
$sudo rm -rf $tmp $tmp.* $seq.full
trap "cd $here; rm -rf $tmp $tmp.*; exit \$status" 0 1 2 3 15
mkdir $tmp

_filter()
{
    echo >>$seq.full
    echo "stdout" >>$seq.full
    cat $tmp.out >>$seq.full
    echo "stderr" >>$seq.full
    cat $tmp.err >>$seq.full
    sed $tmp.out -e "s;$tmp;TMP;g" | LC_COLLATE=POSIX sort
    sed $tmp.err -e "s;$tmp;TMP;g"
}

# real QA test starts here
echo "=== directory traversal and file checks ==="
cp src/foo.index $tmp
echo; echo "TMP/foo.index alone:"
pmlogcheck -v $tmp/foo >$tmp.out 2>$tmp.err
_filter
cp src/foo.0 $tmp
echo; echo "TMP/foo.meta missing:"
pmlogcheck -v $tmp/foo >$tmp.out 2>$tmp.err
_filter
rm $tmp/foo.0
cp src/foo.meta $tmp
echo; echo "TMP/foo.0 missing:"
pmlogcheck -v $tmp/foo >$tmp.out 2>$tmp.err
_filter
cp src/foo.0 $tmp
touch $tmp/foo
touch $tmp/foo.
touch $tmp/foobar.0
touch $tmp/foo.999999
touch $tmp/foo.1
chmod 0 $tmp/foo.1
touch $tmp/foo.bar
touch $tmp/foo.99x99
echo; echo "TMP/bar:"
pmlogcheck -v $tmp/bar >$tmp.out 2>$tmp.err
_filter
echo; echo "TMP/foo:"
pmlogcheck -v $tmp/foo >$tmp.out 2>$tmp.err
_filter
cd $tmp
echo; echo "foo:"
pmlogcheck -v foo >$tmp.out 2>$tmp.err
_filter
chmod 644 $tmp/foo.1
echo; echo "foo:"
pmlogcheck -v foo.index >$tmp.out 2>$tmp.err
_filter
cd $here

echo
echo "=== pass 0 failures ==="
for arch in src/badlen-*.meta src/badti-1
do
    # some of the bad archives do not have pass 0 style corruption,
    # so skip these ones for now
    #
    case $arch
    in
	src/badlen-0.meta|src/badlen-8.meta)
		;;
	*)
		echo; echo "$arch:"
		pmlogcheck -v $arch >$tmp.out 2>$tmp.err
		_filter
		;;
    esac
done

echo
echo "=== pass 1 failures ==="
for arch in src/badti-*.meta
do
    # some of the bad archives do not have pass 1 style corruption,
    # so skip these ones for now
    #
    case $arch
    in
	src/badti-1.meta)
		;;
	*)
		echo; echo "$arch:"
		pmlogcheck -v $arch >$tmp.out 2>$tmp.err
		_filter
		;;
    esac
done

# success, all done
status=0

exit