Update QA tests and host configs.
[xfstests-dev.git] / 097
1 #! /bin/sh
2 # FS QA Test No. 097. Modifed from UDFQA test 033.
3 #
4 # simple attr tests for EAs:
5 #  - set
6 #  - get
7 #  - list
8 #  - remove
9 # Basic testing.
10
11 #-----------------------------------------------------------------------
12 #  Copyright (c) 2000-2004 Silicon Graphics, Inc.  All Rights Reserved.
13 #  This program is free software; you can redistribute it and/or modify
14 #  it under the terms of the GNU General Public License as published by
15 #  the Free Software Foundation; either version 2 of the License, or
16 #  (at your option) any later version.
17 #
18 #  This program is distributed in the hope that it will be useful,
19 #  but WITHOUT ANY WARRANTY; without even the implied warranty of
20 #  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
21 #  GNU General Public License for more details.
22 #
23 #  You should have received a copy of the GNU General Public License
24 #  along with this program; if not, write to the Free Software
25 #  Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307
26 #  USA
27 #
28 #  Contact information: Silicon Graphics, Inc., 1500 Crittenden Lane,
29 #  Mountain View, CA 94043, USA, or: http://www.sgi.com
30 #-----------------------------------------------------------------------
31 #
32 # creator
33 owner=ajones@sgi.com
34
35 seq=`basename $0`
36 echo "QA output created by $seq"
37
38 here=`pwd`
39 tmp=/tmp/$$
40 status=1        # failure is the default!
41 TARGET_DIR=
42 trap "_cleanup; exit \$status" 0 1 2 3 15
43
44 _cleanup()
45 {
46     rm -f $tmp.*
47     cd $TARGET_DIR
48     rm -f foo
49 }
50
51 _umount_and_mount()
52 {
53     cd /
54     umount $TARGET_DIR
55     if [ "$FSTYP" == "xfs" ]; then
56         _test_mount
57     else
58         _scratch_mount
59     fi
60     
61     cd $TARGET_DIR
62 }
63
64 # get standard environment, filters and checks
65 . ./common.rc
66 . ./common.filter
67
68 # link correct .out file
69 # This is done bacause udf and xfs print attrs in different orders.
70 rm -rf $seq.out
71 if [ "$FSTYP" == "xfs" ]; then
72     ln -s $seq.out.xfs $seq.out
73 else
74     ln -s $seq.out.udf $seq.out
75 fi
76
77 # real QA test starts here
78 _supported_fs udf xfs
79 _supported_os IRIX
80
81 _require_scratch
82 _setup_testdir 
83
84 TARGET_DIR=$SCRATCH_MNT
85 [ "$FSTYP" == "xfs" ] && TARGET_DIR=$TEST_DIR
86 cd $TARGET_DIR
87
88 echo "create file foo"
89 touch foo
90
91 echo "should be no EAs for foo:"
92 attr -l foo
93
94 echo "set EA <noise,woof>:"
95 attr -s noise -V woof foo
96
97 echo "set EA <colour,blue>:"
98 attr -s colour -V blue foo
99
100 echo "set EA <size,small>:"
101 attr -s size -V small foo
102
103 echo "list the EAs for foo: noise, colour, size" 
104 attr -l foo
105
106 echo "check the list again for foo"
107 attr -l foo
108
109 echo "unmount the FS and see if EAs are persistent"
110 _umount_and_mount
111
112 echo "check the list again for foo after umount/mount"
113 attr -l foo
114
115 echo "get the value of the noise EA"
116 attr -g noise foo
117
118 echo "get the value of the colour EA which was removed earlier"
119 attr -g colour foo
120
121 echo "get the value of the size EA"
122 attr -g size foo
123
124 echo "remove the colour EA on foo"
125 attr -r colour foo
126
127 echo "list EAs for foo: noise, size"
128 attr -l foo
129
130 echo "get the value of the noise EA"
131 attr -g noise foo
132
133 echo "get the value of the colour EA which was removed earlier"
134 attr -g colour foo
135
136 echo "get the value of the size EA"
137 attr -g size foo
138
139 echo "list all the EAs again: noise, size"
140 attr -l foo
141
142 echo "change the value of the size EA from small to huge"
143 attr -s size -V huge foo
144
145 echo "get the size EA which should now have value huge"
146 attr -g size foo
147
148 echo "list EAs: noise, size"
149 attr -l foo
150
151 echo "remove the size EA from foo"
152 attr -r size foo
153
154 echo "list EAs: noise (size EA has been removed)"
155 attr -l foo
156
157 echo "get the noise EA: woof"
158 attr -g noise foo
159
160 echo "try removing non-existent EA named woof"
161 attr -r woof foo
162
163 echo "try removing already removed EA size"
164 attr -r size foo
165
166 echo "list EAs: noise"
167 attr -l foo
168
169 echo "try removing already removed EA colour"
170 attr -r colour foo
171
172 echo "list EAs: noise"
173 attr -l foo
174
175 echo "remove remaining EA noise"
176 attr -r noise foo
177
178 echo "list EAs: should be no EAs left now"
179 attr -l foo
180
181 echo "unmount the FS and see if EAs are persistent"
182 _umount_and_mount
183
184 echo "list EAs: should still be no EAs left"
185 attr -l foo
186
187 echo ""
188 echo "*** Test out the root namespace ***"
189 echo ""
190
191 echo "set EA <root:colour,marone>:"
192 attr -R -s colour -V marone foo
193
194 echo "set EA <user:colour,beige>:"
195 attr -s colour -V beige foo
196
197 echo "set EA <user:vomit,pizza>:"
198 attr -s vomit -V pizza foo
199
200 echo "set EA <root:noise,whack>:"
201 attr -R -s noise -V whack foo
202
203 echo "list root EAs: <root:colour,noise>:"
204 attr -R -l foo
205
206 echo "list user EAs: <user:colour,vomit>:"
207 attr -l foo
208
209 echo "get root EA colour: marone"
210 attr -R -g colour foo
211
212 echo "get root EA noise: whack"
213 attr -R -g noise foo
214
215 echo "get root EA vomit which is a user EA => find nothing"
216 attr -R -g vomit foo
217
218 echo ""
219 echo "unmount the FS and see if EAs are persistent"
220 echo ""
221 _umount_and_mount
222
223 echo "get root EA colour: marone"
224 attr -R -g colour foo
225
226 echo "get root EA noise: whack"
227 attr -R -g noise foo
228
229 echo "get user EA vomit: pizza" 
230 attr -g vomit foo
231
232 echo "remove the root colour EA"
233 attr -R -r colour foo
234
235 echo "list root EAs: <root:noise>:"
236 attr -R -l foo
237
238 echo "list user EAs: <user:colour,vomit>:"
239 attr -l foo
240
241 echo "remove the final root EA noise"
242 attr -R -r noise foo
243
244 echo "list root EAs: none"
245 attr -R -l foo
246
247 cd /
248 _cleanup_testdir
249
250 # Check the filesystem
251 _check_scratch_fs
252
253 # optional stuff if your test has verbose output to help resolve problems
254 #echo
255 #echo "If failure, check $seq.full (this) and $seq.full.ok (reference)"
256
257 # success, all done
258 status=0
259 exit