]> CyberLeo.Net >> Repos - FreeBSD/releng/10.2.git/blob - contrib/netbsd-tests/fs/ffs/t_quotalimit.sh
- Copy stable/10@285827 to releng/10.2 in preparation for 10.2-RC1
[FreeBSD/releng/10.2.git] / contrib / netbsd-tests / fs / ffs / t_quotalimit.sh
1 # $NetBSD: t_quotalimit.sh,v 1.4 2012/01/18 20:51:23 bouyer Exp $ 
2 #
3 #  Copyright (c) 2011 Manuel Bouyer
4 #  All rights reserved.
5
6 #  Redistribution and use in source and binary forms, with or without
7 #  modification, are permitted provided that the following conditions
8 #  are met:
9 #  1. Redistributions of source code must retain the above copyright
10 #     notice, this list of conditions and the following disclaimer.
11 #  2. Redistributions in binary form must reproduce the above copyright
12 #     notice, this list of conditions and the following disclaimer in the
13 #     documentation and/or other materials provided with the distribution.
14
15 #  THIS SOFTWARE IS PROVIDED BY THE NETBSD FOUNDATION, INC. AND CONTRIBUTORS
16 #  ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED
17 #  TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
18 #  PURPOSE ARE DISCLAIMED.  IN NO EVENT SHALL THE FOUNDATION OR CONTRIBUTORS
19 #  BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
20 #  CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
21 #  SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
22 #  INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
23 #  CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
24 #  ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
25 #  POSSIBILITY OF SUCH DAMAGE.
26 #
27
28 for e in le; do
29   for v in 1; do
30     for q in "user" "group"; do
31       test_case_root limit_${e}_${v}_${q} limit_quota \
32          "hit hard limit quota with ${q} enabled" -b ${e} ${v} ${q}
33       test_case_root limit_${e}_${v}_${q}_log limit_quota \
34          "hit hard limit quota with ${q} enabled, WAPBL" -bl ${e} ${v} ${q}
35       test_case_root slimit_${e}_${v}_${q} limit_softquota \
36          "hit soft limit quota with ${q} enabled after grace time" \
37          -b ${e} ${v} ${q}
38       test_case_root inolimit_${e}_${v}_${q} limit_iquota \
39          "hit hard limit ino quota with ${q} enabled" -b ${e} ${v} ${q}
40       test_case_root inolimit_${e}_${v}_${q}_log limit_iquota \
41          "hit hard limit ino quota with ${q} enabled, WAPBL" -bl ${e} ${v} ${q}
42       test_case_root sinolimit_${e}_${v}_${q} limit_softiquota \
43          "hit soft limit ino quota with ${q} enabled after grace time" \
44          -b ${e} ${v} ${q}
45       test_case_root herit_defq_${e}_${v}_${q} inherit_defaultquota \
46          "new id herit from default for ${q} quota" -b ${e} ${v} ${q}
47       test_case_root herit_defq_${e}_${v}_${q}_log inherit_defaultquota \
48          "new id herit from default for ${q} quota, WAPBL" -bl ${e} ${v} ${q}
49       test_case_root herit_idefq_${e}_${v}_${q}_log inherit_defaultiquota \
50          "new id herit from default for ${q} ino quota, WAPBL" -bl ${e} ${v} ${q}
51     done
52   done
53 done
54
55 limit_quota()
56 {
57         create_ffs_server $*
58         local q=$4
59         local expect
60         local id=1
61
62         case ${q} in
63         user)
64                 expect=u
65                 fail=g
66                 ;;
67         group)
68                 expect=g
69                 fail=u
70                 ;;
71         both)
72                 expect="u g"
73                 fail=""
74                 ;;
75         *)
76                 atf_fail "wrong quota type"
77                 ;;
78         esac
79
80         for q in ${expect} ; do
81                 atf_check -s exit:0 \
82                    env LD_PRELOAD=/usr/lib/librumphijack.so RUMPHIJACK=vfs=getvfsstat,blanket=/mnt edquota -$q -s2k/4 -h3k/6 \
83                    -t 2h/2h ${id}
84         done
85         atf_check -s exit:0 rump.halt
86
87         #now start the server which does the limits tests
88         atf_check -s exit:0 -o ignore \
89 -e match:'test 0: write up to hard limit returned 69: Disc quota exceeded' \
90             $(atf_get_srcdir)/h_quota2_tests -b 0 ${IMG} ${RUMP_SERVER}
91         for q in ${expect} ; do
92                 atf_check -s exit:0 \
93                     -o match:'/mnt   3072 B\*  2048 B   3072 B     2:0      2       4       6         ' \
94                     env LD_PRELOAD=/usr/lib/librumphijack.so RUMPHIJACK=vfs=getvfsstat,blanket=/mnt quota -$q -h ${id}
95                 atf_check -s exit:0 \
96                     -o match:'daemon    \+-        3        2        3    2:0         2       4       6' \
97                     env LD_PRELOAD=/usr/lib/librumphijack.so RUMPHIJACK=vfs=getvfsstat,blanket=/mnt repquota -$q /mnt
98         done
99         rump_quota_shutdown
100 }
101
102 limit_softquota()
103 {
104         create_ffs_server $*
105         local q=$4
106         local expect
107         local id=1
108
109         case ${q} in
110         user)
111                 expect=u
112                 fail=g
113                 ;;
114         group)
115                 expect=g
116                 fail=u
117                 ;;
118         both)
119                 expect="u g"
120                 fail=""
121                 ;;
122         *)
123                 atf_fail "wrong quota type"
124                 ;;
125         esac
126
127         for q in ${expect} ; do
128                 atf_check -s exit:0 \
129                    env LD_PRELOAD=/usr/lib/librumphijack.so RUMPHIJACK=vfs=getvfsstat,blanket=/mnt edquota -$q -s2k/4 -h3k/6 \
130                    -t 1s/1d ${id}
131         done
132         atf_check -s exit:0 rump.halt
133
134         #now start the server which does the limits tests
135         atf_check -s exit:0 -o ignore \
136 -e match:'test 1: write beyond the soft limit after grace time returned 69: Disc quota exceeded' \
137             $(atf_get_srcdir)/h_quota2_tests -b 1 ${IMG} ${RUMP_SERVER}
138         for q in ${expect} ; do
139                 atf_check -s exit:0 \
140                     -o match:'/mnt   2560 B\*  2048 B   3072 B    none      2       4       6         ' \
141                     env LD_PRELOAD=/usr/lib/librumphijack.so RUMPHIJACK=vfs=getvfsstat,blanket=/mnt quota -$q -h ${id}
142                 atf_check -s exit:0 \
143                     -o match:'daemon    \+-        2        2        3   none         2       4       6' \
144                     env LD_PRELOAD=/usr/lib/librumphijack.so RUMPHIJACK=vfs=getvfsstat,blanket=/mnt repquota -$q /mnt
145         done
146         rump_quota_shutdown
147 }
148
149 limit_iquota()
150 {
151         create_ffs_server $*
152         local q=$4
153         local expect
154         local id=1
155
156         case ${q} in
157         user)
158                 expect=u
159                 fail=g
160                 ;;
161         group)
162                 expect=g
163                 fail=u
164                 ;;
165         both)
166                 expect="u g"
167                 fail=""
168                 ;;
169         *)
170                 atf_fail "wrong quota type"
171                 ;;
172         esac
173
174         for q in ${expect} ; do
175                 atf_check -s exit:0 \
176                    env LD_PRELOAD=/usr/lib/librumphijack.so RUMPHIJACK=vfs=getvfsstat,blanket=/mnt edquota -$q -s2m/4 -h3m/6 \
177                    -t 2h/2h ${id}
178         done
179         atf_check -s exit:0 rump.halt
180
181         #now start the server which does the limits tests
182         atf_check -s exit:0 -o ignore \
183 -e match:'test 2: create file up to hard limit returned 69: Disc quota exceeded' \
184             $(atf_get_srcdir)/h_quota2_tests -b 2 ${IMG} ${RUMP_SERVER}
185         for q in ${expect} ; do
186                 atf_check -s exit:0 \
187                     -o match:'/mnt   3072 B   2048 K   3072 K              6 \*     4       6      2:0' \
188                     env LD_PRELOAD=/usr/lib/librumphijack.so RUMPHIJACK=vfs=getvfsstat,blanket=/mnt quota -$q -h ${id}
189                 atf_check -s exit:0 \
190                     -o match:'daemon    -\+        3     2048     3072                6       4       6    2:0' \
191                     env LD_PRELOAD=/usr/lib/librumphijack.so RUMPHIJACK=vfs=getvfsstat,blanket=/mnt repquota -$q /mnt
192         done
193         rump_quota_shutdown
194 }
195
196 limit_softiquota()
197 {
198         create_ffs_server $*
199         local q=$4
200         local expect
201         local id=1
202
203         case ${q} in
204         user)
205                 expect=u
206                 fail=g
207                 ;;
208         group)
209                 expect=g
210                 fail=u
211                 ;;
212         both)
213                 expect="u g"
214                 fail=""
215                 ;;
216         *)
217                 atf_fail "wrong quota type"
218                 ;;
219         esac
220
221         for q in ${expect} ; do
222                 atf_check -s exit:0 \
223                    env LD_PRELOAD=/usr/lib/librumphijack.so RUMPHIJACK=vfs=getvfsstat,blanket=/mnt edquota -$q -s2m/4 -h3m/6 \
224                    -t 1d/1s ${id}
225         done
226         atf_check -s exit:0 rump.halt
227
228         #now start the server which does the limits tests
229         atf_check -s exit:0 -o ignore \
230 -e match:'test 3: create file beyond the soft limit after grace time returned 69: Disc quota exceeded' \
231             $(atf_get_srcdir)/h_quota2_tests -b 3 ${IMG} ${RUMP_SERVER}
232         for q in ${expect} ; do
233                 atf_check -s exit:0 \
234                     -o match:'/mnt   2560 B   2048 K   3072 K              5 \*     4       6     none' \
235                     env LD_PRELOAD=/usr/lib/librumphijack.so RUMPHIJACK=vfs=getvfsstat,blanket=/mnt quota -$q -h ${id}
236                 atf_check -s exit:0 \
237                     -o match:'daemon    -\+        2     2048     3072                5       4       6   none' \
238                     env LD_PRELOAD=/usr/lib/librumphijack.so RUMPHIJACK=vfs=getvfsstat,blanket=/mnt repquota -$q /mnt
239         done
240         rump_quota_shutdown
241 }
242
243 inherit_defaultquota()
244 {
245         create_ffs_server $*
246         local q=$4
247         local expect
248         local id=1
249
250         case ${q} in
251         user)
252                 expect=u
253                 fail=g
254                 ;;
255         group)
256                 expect=g
257                 fail=u
258                 ;;
259         both)
260                 expect="u g"
261                 fail=""
262                 ;;
263         *)
264                 atf_fail "wrong quota type"
265                 ;;
266         esac
267
268         for q in ${expect} ; do
269                 atf_check -s exit:0 \
270                    env LD_PRELOAD=/usr/lib/librumphijack.so RUMPHIJACK=vfs=getvfsstat,blanket=/mnt edquota -$q -s2k/4 -h3k/6 \
271                    -t 2h/2h -d
272         done
273         for q in ${expect} ; do
274                 atf_check -s exit:0 \
275                     -o match:'Disk quotas for .*id 1\): none' \
276                     env LD_PRELOAD=/usr/lib/librumphijack.so RUMPHIJACK=vfs=getvfsstat,blanket=/mnt quota -$q -v ${id}
277         done
278         atf_check -s exit:0 rump.halt
279
280         #now start the server which does the limits tests
281         atf_check -s exit:0 -o ignore \
282 -e match:'test 0: write up to hard limit returned 69: Disc quota exceeded' \
283             $(atf_get_srcdir)/h_quota2_tests -b 0 ${IMG} ${RUMP_SERVER}
284         for q in ${expect} ; do
285                 atf_check -s exit:0 \
286                     -o match:'/mnt   3072 B\*  2048 B   3072 B     2:0      2       4       6         ' \
287                     env LD_PRELOAD=/usr/lib/librumphijack.so RUMPHIJACK=vfs=getvfsstat,blanket=/mnt quota -$q -h ${id}
288                 atf_check -s exit:0 \
289                     -o match:'daemon    \+-        3        2        3    2:0         2       4       6' \
290                     env LD_PRELOAD=/usr/lib/librumphijack.so RUMPHIJACK=vfs=getvfsstat,blanket=/mnt repquota -$q /mnt
291         done
292         rump_quota_shutdown
293 }
294
295 inherit_defaultiquota()
296 {
297         create_ffs_server $*
298         local q=$4
299         local expect
300         local id=1
301
302         case ${q} in
303         user)
304                 expect=u
305                 fail=g
306                 ;;
307         group)
308                 expect=g
309                 fail=u
310                 ;;
311         both)
312                 expect="u g"
313                 fail=""
314                 ;;
315         *)
316                 atf_fail "wrong quota type"
317                 ;;
318         esac
319
320         for q in ${expect} ; do
321                 atf_check -s exit:0 \
322                    env LD_PRELOAD=/usr/lib/librumphijack.so RUMPHIJACK=vfs=getvfsstat,blanket=/mnt edquota -$q -s2m/4 -h3m/6 \
323                    -t 2h/2h -d
324         done
325         for q in ${expect} ; do
326                 atf_check -s exit:0 \
327                     -o match:'Disk quotas for .*id 1\): none' \
328                     env LD_PRELOAD=/usr/lib/librumphijack.so RUMPHIJACK=vfs=getvfsstat,blanket=/mnt quota -$q -v ${id}
329         done
330         atf_check -s exit:0 rump.halt
331
332         #now start the server which does the limits tests
333         atf_check -s exit:0 -o ignore \
334 -e match:'test 2: create file up to hard limit returned 69: Disc quota exceeded' \
335             $(atf_get_srcdir)/h_quota2_tests -b 2 ${IMG} ${RUMP_SERVER}
336         for q in ${expect} ; do
337                 atf_check -s exit:0 \
338                     -o match:'/mnt   3072 B   2048 K   3072 K              6 \*     4       6      2:0' \
339                     env LD_PRELOAD=/usr/lib/librumphijack.so RUMPHIJACK=vfs=getvfsstat,blanket=/mnt quota -$q -h ${id}
340                 atf_check -s exit:0 \
341                     -o match:'daemon    -\+        3     2048     3072                6       4       6    2:0' \
342                     env LD_PRELOAD=/usr/lib/librumphijack.so RUMPHIJACK=vfs=getvfsstat,blanket=/mnt repquota -$q /mnt
343         done
344         rump_quota_shutdown
345 }