1# CDDL HEADER START
2#
3# The contents of this file are subject to the terms of the
4# Common Development and Distribution License (the "License").
5# You may not use this file except in compliance with the License.
6#
7# You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE
8# or http://www.opensolaris.org/os/licensing.
9# See the License for the specific language governing permissions
10# and limitations under the License.
11#
12# When distributing Covered Code, include this CDDL HEADER in each
13# file and include the License file at usr/src/OPENSOLARIS.LICENSE.
14# If applicable, add the following below this CDDL HEADER, with the
15# fields enclosed by brackets "[]" replaced with your own identifying
16# information: Portions Copyright [yyyy] [name of copyright owner]
17#
18# CDDL HEADER END
19#
20
21# $FreeBSD$
22
23#
24# Copyright 2012 Spectra Logic.  All rights reserved.
25# Use is subject to license terms.
26#
27
28
29atf_test_case reservation_001_pos cleanup
30reservation_001_pos_head()
31{
32	atf_set "descr" "Verify that to set a reservation on a filesystem or volume must use value smaller than space \ available property of pool"
33	atf_set "require.progs"  zfs
34}
35reservation_001_pos_body()
36{
37	. $(atf_get_srcdir)/../../include/default.cfg
38	. $(atf_get_srcdir)/reservation.kshlib
39	. $(atf_get_srcdir)/reservation.cfg
40
41	verify_disk_count "$DISKS" 1
42	ksh93 $(atf_get_srcdir)/setup.ksh || atf_fail "Setup failed"
43	ksh93 $(atf_get_srcdir)/reservation_001_pos.ksh || atf_fail "Testcase failed"
44}
45reservation_001_pos_cleanup()
46{
47	. $(atf_get_srcdir)/../../include/default.cfg
48	. $(atf_get_srcdir)/reservation.kshlib
49	. $(atf_get_srcdir)/reservation.cfg
50
51	ksh93 $(atf_get_srcdir)/cleanup.ksh || atf_fail "Cleanup failed"
52}
53
54
55atf_test_case reservation_002_pos cleanup
56reservation_002_pos_head()
57{
58	atf_set "descr" "Reservation values cannot exceed the amount of space available in the pool"
59	atf_set "require.progs"  zfs
60}
61reservation_002_pos_body()
62{
63	. $(atf_get_srcdir)/../../include/default.cfg
64	. $(atf_get_srcdir)/reservation.kshlib
65	. $(atf_get_srcdir)/reservation.cfg
66
67	verify_disk_count "$DISKS" 1
68	ksh93 $(atf_get_srcdir)/setup.ksh || atf_fail "Setup failed"
69	ksh93 $(atf_get_srcdir)/reservation_002_pos.ksh || atf_fail "Testcase failed"
70}
71reservation_002_pos_cleanup()
72{
73	. $(atf_get_srcdir)/../../include/default.cfg
74	. $(atf_get_srcdir)/reservation.kshlib
75	. $(atf_get_srcdir)/reservation.cfg
76
77	ksh93 $(atf_get_srcdir)/cleanup.ksh || atf_fail "Cleanup failed"
78}
79
80
81atf_test_case reservation_003_pos cleanup
82reservation_003_pos_head()
83{
84	atf_set "descr" "Verify it is possible to set reservations multiple times on a filesystem regular and sparse volume"
85	atf_set "require.progs"  zfs
86}
87reservation_003_pos_body()
88{
89	. $(atf_get_srcdir)/../../include/default.cfg
90	. $(atf_get_srcdir)/reservation.kshlib
91	. $(atf_get_srcdir)/reservation.cfg
92
93	verify_disk_count "$DISKS" 1
94	ksh93 $(atf_get_srcdir)/setup.ksh || atf_fail "Setup failed"
95	ksh93 $(atf_get_srcdir)/reservation_003_pos.ksh || atf_fail "Testcase failed"
96}
97reservation_003_pos_cleanup()
98{
99	. $(atf_get_srcdir)/../../include/default.cfg
100	. $(atf_get_srcdir)/reservation.kshlib
101	. $(atf_get_srcdir)/reservation.cfg
102
103	ksh93 $(atf_get_srcdir)/cleanup.ksh || atf_fail "Cleanup failed"
104}
105
106
107atf_test_case reservation_004_pos cleanup
108reservation_004_pos_head()
109{
110	atf_set "descr" "Verify space released when a dataset with reservation is destroyed"
111	atf_set "require.progs"  zfs
112}
113reservation_004_pos_body()
114{
115	. $(atf_get_srcdir)/../../include/default.cfg
116	. $(atf_get_srcdir)/reservation.kshlib
117	. $(atf_get_srcdir)/reservation.cfg
118
119	verify_disk_count "$DISKS" 1
120	ksh93 $(atf_get_srcdir)/setup.ksh || atf_fail "Setup failed"
121	ksh93 $(atf_get_srcdir)/reservation_004_pos.ksh || atf_fail "Testcase failed"
122}
123reservation_004_pos_cleanup()
124{
125	. $(atf_get_srcdir)/../../include/default.cfg
126	. $(atf_get_srcdir)/reservation.kshlib
127	. $(atf_get_srcdir)/reservation.cfg
128
129	ksh93 $(atf_get_srcdir)/cleanup.ksh || atf_fail "Cleanup failed"
130}
131
132
133atf_test_case reservation_005_pos cleanup
134reservation_005_pos_head()
135{
136	atf_set "descr" "Verify space released when reservation on a dataset is setto 'none'"
137	atf_set "require.progs"  zfs
138}
139reservation_005_pos_body()
140{
141	. $(atf_get_srcdir)/../../include/default.cfg
142	. $(atf_get_srcdir)/reservation.kshlib
143	. $(atf_get_srcdir)/reservation.cfg
144
145	verify_disk_count "$DISKS" 1
146	ksh93 $(atf_get_srcdir)/setup.ksh || atf_fail "Setup failed"
147	ksh93 $(atf_get_srcdir)/reservation_005_pos.ksh || atf_fail "Testcase failed"
148}
149reservation_005_pos_cleanup()
150{
151	. $(atf_get_srcdir)/../../include/default.cfg
152	. $(atf_get_srcdir)/reservation.kshlib
153	. $(atf_get_srcdir)/reservation.cfg
154
155	ksh93 $(atf_get_srcdir)/cleanup.ksh || atf_fail "Cleanup failed"
156}
157
158
159atf_test_case reservation_006_pos cleanup
160reservation_006_pos_head()
161{
162	atf_set "descr" "Verify can create files both inside and outside reserved areas"
163	atf_set "require.progs"  zfs
164}
165reservation_006_pos_body()
166{
167	. $(atf_get_srcdir)/../../include/default.cfg
168	. $(atf_get_srcdir)/reservation.kshlib
169	. $(atf_get_srcdir)/reservation.cfg
170
171	verify_disk_count "$DISKS" 1
172	ksh93 $(atf_get_srcdir)/setup.ksh || atf_fail "Setup failed"
173	ksh93 $(atf_get_srcdir)/reservation_006_pos.ksh || atf_fail "Testcase failed"
174}
175reservation_006_pos_cleanup()
176{
177	. $(atf_get_srcdir)/../../include/default.cfg
178	. $(atf_get_srcdir)/reservation.kshlib
179	. $(atf_get_srcdir)/reservation.cfg
180
181	ksh93 $(atf_get_srcdir)/cleanup.ksh || atf_fail "Cleanup failed"
182}
183
184
185atf_test_case reservation_007_pos cleanup
186reservation_007_pos_head()
187{
188	atf_set "descr" "Verify reservations on data sets doesn't affect other data sets at same level except for consuming space from common pool"
189	atf_set "require.progs"  zfs
190}
191reservation_007_pos_body()
192{
193	. $(atf_get_srcdir)/../../include/default.cfg
194	. $(atf_get_srcdir)/reservation.kshlib
195	. $(atf_get_srcdir)/reservation.cfg
196
197	verify_disk_count "$DISKS" 1
198	ksh93 $(atf_get_srcdir)/setup.ksh || atf_fail "Setup failed"
199	ksh93 $(atf_get_srcdir)/reservation_007_pos.ksh || atf_fail "Testcase failed"
200}
201reservation_007_pos_cleanup()
202{
203	. $(atf_get_srcdir)/../../include/default.cfg
204	. $(atf_get_srcdir)/reservation.kshlib
205	. $(atf_get_srcdir)/reservation.cfg
206
207	ksh93 $(atf_get_srcdir)/cleanup.ksh || atf_fail "Cleanup failed"
208}
209
210
211atf_test_case reservation_008_pos cleanup
212reservation_008_pos_head()
213{
214	atf_set "descr" "Verify reducing reservation allows other datasets to use space"
215	atf_set "require.progs"  zfs
216	atf_set "timeout" 600
217}
218reservation_008_pos_body()
219{
220	. $(atf_get_srcdir)/../../include/default.cfg
221	. $(atf_get_srcdir)/reservation.kshlib
222	. $(atf_get_srcdir)/reservation.cfg
223
224	verify_disk_count "$DISKS" 1
225	ksh93 $(atf_get_srcdir)/setup.ksh || atf_fail "Setup failed"
226	ksh93 $(atf_get_srcdir)/reservation_008_pos.ksh || atf_fail "Testcase failed"
227}
228reservation_008_pos_cleanup()
229{
230	. $(atf_get_srcdir)/../../include/default.cfg
231	. $(atf_get_srcdir)/reservation.kshlib
232	. $(atf_get_srcdir)/reservation.cfg
233
234	ksh93 $(atf_get_srcdir)/cleanup.ksh || atf_fail "Cleanup failed"
235}
236
237
238atf_test_case reservation_009_pos cleanup
239reservation_009_pos_head()
240{
241	atf_set "descr" "Setting top level dataset reservation to 'none' allows more data to be written to top level filesystem"
242	atf_set "require.progs"  zfs
243	atf_set "timeout" 600
244}
245reservation_009_pos_body()
246{
247	. $(atf_get_srcdir)/../../include/default.cfg
248	. $(atf_get_srcdir)/reservation.kshlib
249	. $(atf_get_srcdir)/reservation.cfg
250
251	verify_disk_count "$DISKS" 1
252	ksh93 $(atf_get_srcdir)/setup.ksh || atf_fail "Setup failed"
253	ksh93 $(atf_get_srcdir)/reservation_009_pos.ksh || atf_fail "Testcase failed"
254}
255reservation_009_pos_cleanup()
256{
257	. $(atf_get_srcdir)/../../include/default.cfg
258	. $(atf_get_srcdir)/reservation.kshlib
259	. $(atf_get_srcdir)/reservation.cfg
260
261	ksh93 $(atf_get_srcdir)/cleanup.ksh || atf_fail "Cleanup failed"
262}
263
264
265atf_test_case reservation_010_pos cleanup
266reservation_010_pos_head()
267{
268	atf_set "descr" "Destroying top level filesystem with reservation allows more data to be written to another top level filesystem"
269	atf_set "require.progs"  zfs
270	atf_set "timeout" 600
271}
272reservation_010_pos_body()
273{
274	. $(atf_get_srcdir)/../../include/default.cfg
275	. $(atf_get_srcdir)/reservation.kshlib
276	. $(atf_get_srcdir)/reservation.cfg
277
278	verify_disk_count "$DISKS" 1
279	ksh93 $(atf_get_srcdir)/setup.ksh || atf_fail "Setup failed"
280	ksh93 $(atf_get_srcdir)/reservation_010_pos.ksh || atf_fail "Testcase failed"
281}
282reservation_010_pos_cleanup()
283{
284	. $(atf_get_srcdir)/../../include/default.cfg
285	. $(atf_get_srcdir)/reservation.kshlib
286	. $(atf_get_srcdir)/reservation.cfg
287
288	ksh93 $(atf_get_srcdir)/cleanup.ksh || atf_fail "Cleanup failed"
289}
290
291
292atf_test_case reservation_011_pos cleanup
293reservation_011_pos_head()
294{
295	atf_set "descr" "Verify reservation settings do not affect quota settings"
296	atf_set "require.progs"  zfs
297}
298reservation_011_pos_body()
299{
300	. $(atf_get_srcdir)/../../include/default.cfg
301	. $(atf_get_srcdir)/reservation.kshlib
302	. $(atf_get_srcdir)/reservation.cfg
303
304	verify_disk_count "$DISKS" 1
305	ksh93 $(atf_get_srcdir)/setup.ksh || atf_fail "Setup failed"
306	ksh93 $(atf_get_srcdir)/reservation_011_pos.ksh || atf_fail "Testcase failed"
307}
308reservation_011_pos_cleanup()
309{
310	. $(atf_get_srcdir)/../../include/default.cfg
311	. $(atf_get_srcdir)/reservation.kshlib
312	. $(atf_get_srcdir)/reservation.cfg
313
314	ksh93 $(atf_get_srcdir)/cleanup.ksh || atf_fail "Cleanup failed"
315}
316
317
318atf_test_case reservation_012_pos cleanup
319reservation_012_pos_head()
320{
321	atf_set "descr" "Verify reservations protect space"
322	atf_set "require.progs"  zfs
323	atf_set "timeout" 600
324}
325reservation_012_pos_body()
326{
327	. $(atf_get_srcdir)/../../include/default.cfg
328	. $(atf_get_srcdir)/reservation.kshlib
329	. $(atf_get_srcdir)/reservation.cfg
330
331	verify_disk_count "$DISKS" 1
332	ksh93 $(atf_get_srcdir)/setup.ksh || atf_fail "Setup failed"
333	ksh93 $(atf_get_srcdir)/reservation_012_pos.ksh || atf_fail "Testcase failed"
334}
335reservation_012_pos_cleanup()
336{
337	. $(atf_get_srcdir)/../../include/default.cfg
338	. $(atf_get_srcdir)/reservation.kshlib
339	. $(atf_get_srcdir)/reservation.cfg
340
341	ksh93 $(atf_get_srcdir)/cleanup.ksh || atf_fail "Cleanup failed"
342}
343
344
345atf_test_case reservation_013_pos cleanup
346reservation_013_pos_head()
347{
348	atf_set "descr" "Reservation properties preserved across exports and imports"
349	atf_set "require.progs"  zfs zpool
350}
351reservation_013_pos_body()
352{
353	. $(atf_get_srcdir)/../../include/default.cfg
354	. $(atf_get_srcdir)/reservation.kshlib
355	. $(atf_get_srcdir)/reservation.cfg
356
357	verify_disk_count "$DISKS" 1
358	ksh93 $(atf_get_srcdir)/setup.ksh || atf_fail "Setup failed"
359	ksh93 $(atf_get_srcdir)/reservation_013_pos.ksh || atf_fail "Testcase failed"
360}
361reservation_013_pos_cleanup()
362{
363	. $(atf_get_srcdir)/../../include/default.cfg
364	. $(atf_get_srcdir)/reservation.kshlib
365	. $(atf_get_srcdir)/reservation.cfg
366
367	ksh93 $(atf_get_srcdir)/cleanup.ksh || atf_fail "Cleanup failed"
368}
369
370
371atf_test_case reservation_014_pos cleanup
372reservation_014_pos_head()
373{
374	atf_set "descr" "Verify cannot set reservation larger than quota"
375	atf_set "require.progs"  zfs
376}
377reservation_014_pos_body()
378{
379	. $(atf_get_srcdir)/../../include/default.cfg
380	. $(atf_get_srcdir)/reservation.kshlib
381	. $(atf_get_srcdir)/reservation.cfg
382
383	verify_disk_count "$DISKS" 1
384	ksh93 $(atf_get_srcdir)/setup.ksh || atf_fail "Setup failed"
385	ksh93 $(atf_get_srcdir)/reservation_014_pos.ksh || atf_fail "Testcase failed"
386}
387reservation_014_pos_cleanup()
388{
389	. $(atf_get_srcdir)/../../include/default.cfg
390	. $(atf_get_srcdir)/reservation.kshlib
391	. $(atf_get_srcdir)/reservation.cfg
392
393	ksh93 $(atf_get_srcdir)/cleanup.ksh || atf_fail "Cleanup failed"
394}
395
396
397atf_test_case reservation_015_pos cleanup
398reservation_015_pos_head()
399{
400	atf_set "descr" "Setting volume reservation to 'none' allows more data to be written to top level filesystem"
401	atf_set "require.progs"  zfs
402	atf_set "timeout" 600
403}
404reservation_015_pos_body()
405{
406	. $(atf_get_srcdir)/../../include/default.cfg
407	. $(atf_get_srcdir)/reservation.kshlib
408	. $(atf_get_srcdir)/reservation.cfg
409
410	verify_disk_count "$DISKS" 1
411	ksh93 $(atf_get_srcdir)/setup.ksh || atf_fail "Setup failed"
412	ksh93 $(atf_get_srcdir)/reservation_015_pos.ksh || atf_fail "Testcase failed"
413}
414reservation_015_pos_cleanup()
415{
416	. $(atf_get_srcdir)/../../include/default.cfg
417	. $(atf_get_srcdir)/reservation.kshlib
418	. $(atf_get_srcdir)/reservation.cfg
419
420	ksh93 $(atf_get_srcdir)/cleanup.ksh || atf_fail "Cleanup failed"
421}
422
423
424atf_test_case reservation_016_pos cleanup
425reservation_016_pos_head()
426{
427	atf_set "descr" "Destroying a regular volume with reservation allows more data to be written to top level filesystem"
428	atf_set "require.progs"  zfs
429	atf_set "timeout" 600
430}
431reservation_016_pos_body()
432{
433	. $(atf_get_srcdir)/../../include/default.cfg
434	. $(atf_get_srcdir)/reservation.kshlib
435	. $(atf_get_srcdir)/reservation.cfg
436
437	verify_disk_count "$DISKS" 1
438	ksh93 $(atf_get_srcdir)/setup.ksh || atf_fail "Setup failed"
439	ksh93 $(atf_get_srcdir)/reservation_016_pos.ksh || atf_fail "Testcase failed"
440}
441reservation_016_pos_cleanup()
442{
443	. $(atf_get_srcdir)/../../include/default.cfg
444	. $(atf_get_srcdir)/reservation.kshlib
445	. $(atf_get_srcdir)/reservation.cfg
446
447	ksh93 $(atf_get_srcdir)/cleanup.ksh || atf_fail "Cleanup failed"
448}
449
450
451atf_test_case reservation_017_pos cleanup
452reservation_017_pos_head()
453{
454	atf_set "descr" "Verify that the volsize changes of sparse volume are not reflectedin the reservation"
455	atf_set "require.progs"  zfs
456}
457reservation_017_pos_body()
458{
459	. $(atf_get_srcdir)/../../include/default.cfg
460	. $(atf_get_srcdir)/reservation.kshlib
461	. $(atf_get_srcdir)/reservation.cfg
462
463	verify_disk_count "$DISKS" 1
464	ksh93 $(atf_get_srcdir)/setup.ksh || atf_fail "Setup failed"
465	ksh93 $(atf_get_srcdir)/reservation_017_pos.ksh || atf_fail "Testcase failed"
466}
467reservation_017_pos_cleanup()
468{
469	. $(atf_get_srcdir)/../../include/default.cfg
470	. $(atf_get_srcdir)/reservation.kshlib
471	. $(atf_get_srcdir)/reservation.cfg
472
473	ksh93 $(atf_get_srcdir)/cleanup.ksh || atf_fail "Cleanup failed"
474}
475
476
477atf_test_case reservation_018_pos cleanup
478reservation_018_pos_head()
479{
480	atf_set "descr" "Verify that reservation doesnot inherit its value from parent."
481	atf_set "require.progs"  zfs
482}
483reservation_018_pos_body()
484{
485	. $(atf_get_srcdir)/../../include/default.cfg
486	. $(atf_get_srcdir)/reservation.kshlib
487	. $(atf_get_srcdir)/reservation.cfg
488
489	verify_disk_count "$DISKS" 1
490	ksh93 $(atf_get_srcdir)/setup.ksh || atf_fail "Setup failed"
491	ksh93 $(atf_get_srcdir)/reservation_018_pos.ksh || atf_fail "Testcase failed"
492}
493reservation_018_pos_cleanup()
494{
495	. $(atf_get_srcdir)/../../include/default.cfg
496	. $(atf_get_srcdir)/reservation.kshlib
497	. $(atf_get_srcdir)/reservation.cfg
498
499	ksh93 $(atf_get_srcdir)/cleanup.ksh || atf_fail "Cleanup failed"
500}
501
502
503atf_init_test_cases()
504{
505
506	atf_add_test_case reservation_001_pos
507	atf_add_test_case reservation_002_pos
508	atf_add_test_case reservation_003_pos
509	atf_add_test_case reservation_004_pos
510	atf_add_test_case reservation_005_pos
511	atf_add_test_case reservation_006_pos
512	atf_add_test_case reservation_007_pos
513	atf_add_test_case reservation_008_pos
514	atf_add_test_case reservation_009_pos
515	atf_add_test_case reservation_010_pos
516	atf_add_test_case reservation_011_pos
517	atf_add_test_case reservation_012_pos
518	atf_add_test_case reservation_013_pos
519	atf_add_test_case reservation_014_pos
520	atf_add_test_case reservation_015_pos
521	atf_add_test_case reservation_016_pos
522	atf_add_test_case reservation_017_pos
523	atf_add_test_case reservation_018_pos
524}
525