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 zfs_unmount_001_pos cleanup
30zfs_unmount_001_pos_head()
31{
32	atf_set "descr" "Verify the u[n]mount [-f] sub-command."
33	atf_set "require.progs"  zfs
34}
35zfs_unmount_001_pos_body()
36{
37	. $(atf_get_srcdir)/../../../include/default.cfg
38	. $(atf_get_srcdir)/zfs_unmount.kshlib
39	. $(atf_get_srcdir)/zfs_unmount.cfg
40
41	verify_disk_count "$DISKS" 1
42	ksh93 $(atf_get_srcdir)/setup.ksh || atf_fail "Setup failed"
43	ksh93 $(atf_get_srcdir)/zfs_unmount_001_pos.ksh || atf_fail "Testcase failed"
44}
45zfs_unmount_001_pos_cleanup()
46{
47	. $(atf_get_srcdir)/../../../include/default.cfg
48	. $(atf_get_srcdir)/zfs_unmount.kshlib
49	. $(atf_get_srcdir)/zfs_unmount.cfg
50
51	ksh93 $(atf_get_srcdir)/cleanup.ksh || atf_fail "Cleanup failed"
52}
53
54
55atf_test_case zfs_unmount_002_pos cleanup
56zfs_unmount_002_pos_head()
57{
58	atf_set "descr" "Verify that '$ZFS $unmountcmd [-f] <filesystem|mountpoint>'whose name is not in 'zfs list' will fail with return code 1."
59	atf_set "require.progs"  zfs
60}
61zfs_unmount_002_pos_body()
62{
63	. $(atf_get_srcdir)/../../../include/default.cfg
64	. $(atf_get_srcdir)/zfs_unmount.kshlib
65	. $(atf_get_srcdir)/zfs_unmount.cfg
66
67	verify_disk_count "$DISKS" 1
68	ksh93 $(atf_get_srcdir)/setup.ksh || atf_fail "Setup failed"
69	ksh93 $(atf_get_srcdir)/zfs_unmount_002_pos.ksh || atf_fail "Testcase failed"
70}
71zfs_unmount_002_pos_cleanup()
72{
73	. $(atf_get_srcdir)/../../../include/default.cfg
74	. $(atf_get_srcdir)/zfs_unmount.kshlib
75	. $(atf_get_srcdir)/zfs_unmount.cfg
76
77	ksh93 $(atf_get_srcdir)/cleanup.ksh || atf_fail "Cleanup failed"
78}
79
80
81atf_test_case zfs_unmount_003_pos cleanup
82zfs_unmount_003_pos_head()
83{
84	atf_set "descr" "Verify that '$ZFS $unmountcmd [-f] <filesystem|mountpoint>'whose mountpoint property is 'legacy' or 'none'  \will fail with return code 1."
85	atf_set "require.progs"  zfs
86}
87zfs_unmount_003_pos_body()
88{
89	. $(atf_get_srcdir)/../../../include/default.cfg
90	. $(atf_get_srcdir)/zfs_unmount.kshlib
91	. $(atf_get_srcdir)/zfs_unmount.cfg
92
93	verify_disk_count "$DISKS" 1
94	ksh93 $(atf_get_srcdir)/setup.ksh || atf_fail "Setup failed"
95	ksh93 $(atf_get_srcdir)/zfs_unmount_003_pos.ksh || atf_fail "Testcase failed"
96}
97zfs_unmount_003_pos_cleanup()
98{
99	. $(atf_get_srcdir)/../../../include/default.cfg
100	. $(atf_get_srcdir)/zfs_unmount.kshlib
101	. $(atf_get_srcdir)/zfs_unmount.cfg
102
103	ksh93 $(atf_get_srcdir)/cleanup.ksh || atf_fail "Cleanup failed"
104}
105
106
107atf_test_case zfs_unmount_004_pos cleanup
108zfs_unmount_004_pos_head()
109{
110	atf_set "descr" "Verify that '$ZFS $unmountcmd [-f] <filesystem|mountpoint>'with an unmounted filesystem will fail with return code 1."
111	atf_set "require.progs"  zfs
112}
113zfs_unmount_004_pos_body()
114{
115	. $(atf_get_srcdir)/../../../include/default.cfg
116	. $(atf_get_srcdir)/zfs_unmount.kshlib
117	. $(atf_get_srcdir)/zfs_unmount.cfg
118
119	verify_disk_count "$DISKS" 1
120	ksh93 $(atf_get_srcdir)/setup.ksh || atf_fail "Setup failed"
121	ksh93 $(atf_get_srcdir)/zfs_unmount_004_pos.ksh || atf_fail "Testcase failed"
122}
123zfs_unmount_004_pos_cleanup()
124{
125	. $(atf_get_srcdir)/../../../include/default.cfg
126	. $(atf_get_srcdir)/zfs_unmount.kshlib
127	. $(atf_get_srcdir)/zfs_unmount.cfg
128
129	ksh93 $(atf_get_srcdir)/cleanup.ksh || atf_fail "Cleanup failed"
130}
131
132
133atf_test_case zfs_unmount_005_pos cleanup
134zfs_unmount_005_pos_head()
135{
136	atf_set "descr" "Verify that '$ZFS $unmountcmd <filesystem|mountpoint>'with a filesystem which mountpoint is currently in use  \will fail with return code 1, and forcefully will succeeds as root."
137	atf_set "require.progs"  zfs
138}
139zfs_unmount_005_pos_body()
140{
141	. $(atf_get_srcdir)/../../../include/default.cfg
142	. $(atf_get_srcdir)/zfs_unmount.kshlib
143	. $(atf_get_srcdir)/zfs_unmount.cfg
144
145	verify_disk_count "$DISKS" 1
146	ksh93 $(atf_get_srcdir)/setup.ksh || atf_fail "Setup failed"
147	ksh93 $(atf_get_srcdir)/zfs_unmount_005_pos.ksh || atf_fail "Testcase failed"
148}
149zfs_unmount_005_pos_cleanup()
150{
151	. $(atf_get_srcdir)/../../../include/default.cfg
152	. $(atf_get_srcdir)/zfs_unmount.kshlib
153	. $(atf_get_srcdir)/zfs_unmount.cfg
154
155	ksh93 $(atf_get_srcdir)/cleanup.ksh || atf_fail "Cleanup failed"
156}
157
158
159atf_test_case zfs_unmount_006_pos cleanup
160zfs_unmount_006_pos_head()
161{
162	atf_set "descr" "Re-creating zfs files, 'zfs unmount' still succeed."
163	atf_set "require.progs"  zfs
164}
165zfs_unmount_006_pos_body()
166{
167	. $(atf_get_srcdir)/../../../include/default.cfg
168	. $(atf_get_srcdir)/zfs_unmount.kshlib
169	. $(atf_get_srcdir)/zfs_unmount.cfg
170
171	verify_disk_count "$DISKS" 1
172	ksh93 $(atf_get_srcdir)/setup.ksh || atf_fail "Setup failed"
173	ksh93 $(atf_get_srcdir)/zfs_unmount_006_pos.ksh || atf_fail "Testcase failed"
174}
175zfs_unmount_006_pos_cleanup()
176{
177	. $(atf_get_srcdir)/../../../include/default.cfg
178	. $(atf_get_srcdir)/zfs_unmount.kshlib
179	. $(atf_get_srcdir)/zfs_unmount.cfg
180
181	ksh93 $(atf_get_srcdir)/cleanup.ksh || atf_fail "Cleanup failed"
182}
183
184
185atf_test_case zfs_unmount_007_neg cleanup
186zfs_unmount_007_neg_head()
187{
188	atf_set "descr" "Badly-formed 'zfs $unmountcmd' with inapplicable scenariosshould return an error."
189	atf_set "require.progs"  zfs
190}
191zfs_unmount_007_neg_body()
192{
193	. $(atf_get_srcdir)/../../../include/default.cfg
194	. $(atf_get_srcdir)/zfs_unmount.kshlib
195	. $(atf_get_srcdir)/zfs_unmount.cfg
196
197	verify_disk_count "$DISKS" 1
198	ksh93 $(atf_get_srcdir)/setup.ksh || atf_fail "Setup failed"
199	ksh93 $(atf_get_srcdir)/zfs_unmount_007_neg.ksh || atf_fail "Testcase failed"
200}
201zfs_unmount_007_neg_cleanup()
202{
203	. $(atf_get_srcdir)/../../../include/default.cfg
204	. $(atf_get_srcdir)/zfs_unmount.kshlib
205	. $(atf_get_srcdir)/zfs_unmount.cfg
206
207	ksh93 $(atf_get_srcdir)/cleanup.ksh || atf_fail "Cleanup failed"
208}
209
210
211atf_test_case zfs_unmount_008_neg cleanup
212zfs_unmount_008_neg_head()
213{
214	atf_set "descr" "zfs unmount fails with bad parameters or scenarios"
215	atf_set "require.progs"  zfs
216}
217zfs_unmount_008_neg_body()
218{
219	. $(atf_get_srcdir)/../../../include/default.cfg
220	. $(atf_get_srcdir)/zfs_unmount.kshlib
221	. $(atf_get_srcdir)/zfs_unmount.cfg
222
223	verify_disk_count "$DISKS" 1
224	ksh93 $(atf_get_srcdir)/setup.ksh || atf_fail "Setup failed"
225	ksh93 $(atf_get_srcdir)/zfs_unmount_008_neg.ksh || atf_fail "Testcase failed"
226}
227zfs_unmount_008_neg_cleanup()
228{
229	. $(atf_get_srcdir)/../../../include/default.cfg
230	. $(atf_get_srcdir)/zfs_unmount.kshlib
231	. $(atf_get_srcdir)/zfs_unmount.cfg
232
233	ksh93 $(atf_get_srcdir)/cleanup.ksh || atf_fail "Cleanup failed"
234}
235
236
237atf_test_case zfs_unmount_009_pos cleanup
238zfs_unmount_009_pos_head()
239{
240	atf_set "descr" "zfs fource unmount and destroy in snapshot directory will not cause error."
241	atf_set "require.progs"  zfs zpool
242}
243zfs_unmount_009_pos_body()
244{
245	. $(atf_get_srcdir)/../../../include/default.cfg
246	. $(atf_get_srcdir)/zfs_unmount.kshlib
247	. $(atf_get_srcdir)/zfs_unmount.cfg
248
249	if other_pools_exist; then
250		atf_skip "Can't test unmount -a with existing pools"
251	fi
252
253	verify_disk_count "$DISKS" 1
254	ksh93 $(atf_get_srcdir)/setup.ksh || atf_fail "Setup failed"
255	ksh93 $(atf_get_srcdir)/zfs_unmount_009_pos.ksh || atf_fail "Testcase failed"
256}
257zfs_unmount_009_pos_cleanup()
258{
259	. $(atf_get_srcdir)/../../../include/default.cfg
260	. $(atf_get_srcdir)/zfs_unmount.kshlib
261	. $(atf_get_srcdir)/zfs_unmount.cfg
262
263	ksh93 $(atf_get_srcdir)/cleanup.ksh || atf_fail "Cleanup failed"
264}
265
266
267atf_test_case zfs_unmount_all_001_pos cleanup
268zfs_unmount_all_001_pos_head()
269{
270	atf_set "descr" "Verify that 'zfs $unmountall' succeeds as root,and all available ZFS filesystems are unmounted."
271	atf_set "require.progs"  zfs
272}
273zfs_unmount_all_001_pos_body()
274{
275	. $(atf_get_srcdir)/../../../include/default.cfg
276	. $(atf_get_srcdir)/zfs_unmount.kshlib
277	. $(atf_get_srcdir)/zfs_unmount.cfg
278
279	if other_pools_exist; then
280		atf_skip "Can't test unmount -a with existing pools"
281	fi
282
283	verify_disk_count "$DISKS" 1
284	ksh93 $(atf_get_srcdir)/setup.ksh || atf_fail "Setup failed"
285	ksh93 $(atf_get_srcdir)/zfs_unmount_all_001_pos.ksh || atf_fail "Testcase failed"
286}
287zfs_unmount_all_001_pos_cleanup()
288{
289	. $(atf_get_srcdir)/../../../include/default.cfg
290	. $(atf_get_srcdir)/zfs_unmount.kshlib
291	. $(atf_get_srcdir)/zfs_unmount.cfg
292
293	ksh93 $(atf_get_srcdir)/cleanup.ksh || atf_fail "Cleanup failed"
294}
295
296
297atf_init_test_cases()
298{
299
300	atf_add_test_case zfs_unmount_001_pos
301	atf_add_test_case zfs_unmount_002_pos
302	atf_add_test_case zfs_unmount_003_pos
303	atf_add_test_case zfs_unmount_004_pos
304	atf_add_test_case zfs_unmount_005_pos
305	atf_add_test_case zfs_unmount_006_pos
306	atf_add_test_case zfs_unmount_007_neg
307	atf_add_test_case zfs_unmount_008_neg
308	atf_add_test_case zfs_unmount_009_pos
309	atf_add_test_case zfs_unmount_all_001_pos
310}
311