Use automake and libtool for dmapi tests.
[xfstests-dev.git] / 019
1 #! /bin/sh
2 # XFS QA Test No. 019
3 # $Id: 1.1 $
4 #
5 # mkfs protofile test
6 #
7 #-----------------------------------------------------------------------
8 # Copyright (c) 2000 Silicon Graphics, Inc.  All Rights Reserved.
9
10 # This program is free software; you can redistribute it and/or modify it
11 # under the terms of version 2 of the GNU General Public License as
12 # published by the Free Software Foundation.
13
14 # This program is distributed in the hope that it would be useful, but
15 # WITHOUT ANY WARRANTY; without even the implied warranty of
16 # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
17
18 # Further, this software is distributed without any warranty that it is
19 # free of the rightful claim of any third person regarding infringement
20 # or the like.  Any license provided herein, whether implied or
21 # otherwise, applies only to this software file.  Patent licenses, if
22 # any, provided herein do not apply to combinations of this program with
23 # other software, or any other product whatsoever.
24
25 # You should have received a copy of the GNU General Public License along
26 # with this program; if not, write the Free Software Foundation, Inc., 59
27 # Temple Place - Suite 330, Boston MA 02111-1307, USA.
28
29 # Contact information: Silicon Graphics, Inc., 1600 Amphitheatre Pkwy,
30 # Mountain View, CA  94043, or:
31
32 # http://www.sgi.com 
33
34 # For further information regarding this notice, see: 
35
36 # http://oss.sgi.com/projects/GenInfo/SGIGPLNoticeExplan/
37 #-----------------------------------------------------------------------
38 #
39 # creator
40 owner=dxm@sgi.com
41
42 seq=`basename $0`
43 echo "QA output created by $seq"
44
45 here=`pwd`
46 tmp=/tmp/$$
47 seqfull="$seq.full"
48 status=1        # failure is the default!
49 # get standard environment, filters and checks
50 . ./common.rc
51 . ./common.filter
52
53 _cleanup()
54 {
55     echo "*** unmount"
56     umount $SCRATCH_MNT 2>/dev/null
57     rm -f $tmp.*
58 }
59 trap "_cleanup; exit \$status" 0 1 2 3 15
60
61 _full()
62 {
63     echo ""            >>$seqfull      
64     echo "*** $* ***"  >>$seqfull
65     echo ""            >>$seqfull
66 }
67
68 _filter_stat()
69 {
70     sed '
71         /^Access:/d;
72         /^Modify:/d;
73         /^Change:/d;
74         s/Device: *[0-9][0-9]*,[0-9][0-9]*/Device: <DEVICE>/;
75         s/Inode: *[0-9][0-9]*/Inode: <INODE>/;
76     ' | tr -s ' '
77 }
78
79 # real QA test starts here
80
81 _require_scratch
82
83 protofile=$tmp.proto
84 tempfile=$tmp.file
85
86 echo fish >$tempfile
87 $here/src/devzero -b 2048 -n 2 $tempfile.2 -c -v 44
88
89 cat >$protofile <<EOF
90 DUMMY1
91 0 0
92 : root directory
93 d--777 3 1
94 : a directory
95 directory d--755 3 1 
96 file_xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx_0 ---755 3 1 $tempfile
97 file_xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx_1 ---755 3 1 $tempfile
98 file_xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx_2 ---755 3 1 $tempfile
99 file_xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx_3 ---755 3 1 $tempfile
100 file_xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx_4 ---755 3 1 $tempfile
101 $
102 : back in the root
103 setuid -u-666 0 0 $tempfile
104 setgid --g666 0 0 $tempfile
105 setugid -ug666 0 0 $tempfile
106 block_device b--012 3 1 161 162 
107 char_device c--345 3 1 177 178
108 pipe p--670 0 0
109 symlink l--123 0 0 bigfile
110 : a file we actually read
111 bigfile ---666 3 0 $tempfile.2
112 : done
113 $
114 EOF
115
116 if [ $? -ne 0 ]
117 then
118     _fail "failed to create test protofile"
119 fi
120
121 _verify_fs()
122 {
123         echo "*** create FS version $1"
124         VERSION="-n version=$1"
125
126         rm -f $seqfull
127         umount $SCRATCH_DEV >/dev/null 2>&1
128
129         _full "mkfs"
130         mkfs -t xfs -f $VERSION -p $protofile $SCRATCH_DEV >>$seqfull 2>&1 \
131                 || _fail "mkfs failed"
132             
133         echo "*** check FS"
134         _check_fs $SCRATCH_DEV
135
136         echo "*** mount FS"
137         _full " mount"
138         mount -t xfs $SCRATCH_DEV $SCRATCH_MNT >>$seqfull 2>&1 \
139                 || _fail "mount failed"
140             
141         echo "*** verify FS"
142         (cd $SCRATCH_MNT ; find . | sort \
143                 | xargs $here/src/lstat64 | _filter_stat)
144         diff -q $SCRATCH_MNT/bigfile $tempfile.2 \
145                 || _fail "bigfile corrupted"
146     
147         echo "*** unmount FS"
148         _full "umount"
149         umount $SCRATCH_DEV >>$seqfull 2>&1 \
150                 || _fail "umount failed"
151             
152         echo "*** check FS"
153         _check_fs $SCRATCH_DEV
154 }
155
156 _verify_fs 1
157 _verify_fs 2
158
159 echo "*** done"
160 rm $seqfull
161 status=0
162 exit