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 zpool_add_001_pos cleanup
30zpool_add_001_pos_head()
31{
32	atf_set "descr" "'zpool add <pool> <vdev> ...' can add devices to the pool."
33	atf_set "require.progs" "ksh93 zpool"
34	atf_set "timeout" 2400
35}
36zpool_add_001_pos_body()
37{
38	. $(atf_get_srcdir)/../../../include/default.cfg
39	. $(atf_get_srcdir)/zpool_add.kshlib
40	. $(atf_get_srcdir)/zpool_add.cfg
41
42	verify_disk_count "$DISKS" 5
43	ksh93 $(atf_get_srcdir)/setup.ksh || atf_fail "Setup failed"
44	ksh93 $(atf_get_srcdir)/zpool_add_001_pos.ksh || atf_fail "Testcase failed"
45}
46zpool_add_001_pos_cleanup()
47{
48	. $(atf_get_srcdir)/../../../include/default.cfg
49	. $(atf_get_srcdir)/zpool_add.kshlib
50	. $(atf_get_srcdir)/zpool_add.cfg
51
52	ksh93 $(atf_get_srcdir)/cleanup.ksh || atf_fail "Cleanup failed"
53}
54
55
56atf_test_case zpool_add_002_pos cleanup
57zpool_add_002_pos_head()
58{
59	atf_set "descr" "'zpool add -f <pool> <vdev> ...' can successfully add devices to the pool in some cases."
60	atf_set "require.progs" "ksh93 zpool"
61	atf_set "timeout" 2400
62}
63zpool_add_002_pos_body()
64{
65	. $(atf_get_srcdir)/../../../include/default.cfg
66	. $(atf_get_srcdir)/zpool_add.kshlib
67	. $(atf_get_srcdir)/zpool_add.cfg
68
69	verify_disk_count "$DISKS" 3
70	ksh93 $(atf_get_srcdir)/setup.ksh || atf_fail "Setup failed"
71	ksh93 $(atf_get_srcdir)/zpool_add_002_pos.ksh || atf_fail "Testcase failed"
72}
73zpool_add_002_pos_cleanup()
74{
75	. $(atf_get_srcdir)/../../../include/default.cfg
76	. $(atf_get_srcdir)/zpool_add.kshlib
77	. $(atf_get_srcdir)/zpool_add.cfg
78
79	ksh93 $(atf_get_srcdir)/cleanup.ksh || atf_fail "Cleanup failed"
80}
81
82
83atf_test_case zpool_add_003_pos cleanup
84zpool_add_003_pos_head()
85{
86	atf_set "descr" "'zpool add -n <pool> <vdev> ...' can display the configuration without actually adding devices to the pool."
87	atf_set "require.progs" "ksh93 zpool"
88	atf_set "timeout" 2400
89}
90zpool_add_003_pos_body()
91{
92	. $(atf_get_srcdir)/../../../include/default.cfg
93	. $(atf_get_srcdir)/zpool_add.kshlib
94	. $(atf_get_srcdir)/zpool_add.cfg
95
96	verify_disk_count "$DISKS" 2
97	ksh93 $(atf_get_srcdir)/setup.ksh || atf_fail "Setup failed"
98	ksh93 $(atf_get_srcdir)/zpool_add_003_pos.ksh || atf_fail "Testcase failed"
99}
100zpool_add_003_pos_cleanup()
101{
102	. $(atf_get_srcdir)/../../../include/default.cfg
103	. $(atf_get_srcdir)/zpool_add.kshlib
104	. $(atf_get_srcdir)/zpool_add.cfg
105
106	ksh93 $(atf_get_srcdir)/cleanup.ksh || atf_fail "Cleanup failed"
107}
108
109
110atf_test_case zpool_add_004_pos cleanup
111zpool_add_004_pos_head()
112{
113	atf_set "descr" "'zpool add <pool> <vdev> ...' can add zfs volume to the pool."
114	atf_set "require.progs" "ksh93 zfs zpool"
115	atf_set "timeout" 2400
116}
117zpool_add_004_pos_body()
118{
119	. $(atf_get_srcdir)/../../../include/default.cfg
120	. $(atf_get_srcdir)/zpool_add.kshlib
121	. $(atf_get_srcdir)/zpool_add.cfg
122
123	verify_disk_count "$DISKS" 2
124	verify_zvol_recursive
125	ksh93 $(atf_get_srcdir)/setup.ksh || atf_fail "Setup failed"
126	ksh93 $(atf_get_srcdir)/zpool_add_004_pos.ksh || atf_fail "Testcase failed"
127}
128zpool_add_004_pos_cleanup()
129{
130	. $(atf_get_srcdir)/../../../include/default.cfg
131	. $(atf_get_srcdir)/zpool_add.kshlib
132	. $(atf_get_srcdir)/zpool_add.cfg
133
134	ksh93 $(atf_get_srcdir)/cleanup.ksh || atf_fail "Cleanup failed"
135}
136
137
138atf_test_case zpool_add_005_pos cleanup
139zpool_add_005_pos_head()
140{
141	atf_set "descr" "'zpool add' should fail with inapplicable scenarios."
142	atf_set "require.progs" "ksh93 zpool"
143	atf_set "timeout" 2400
144}
145zpool_add_005_pos_body()
146{
147	. $(atf_get_srcdir)/../../../include/default.cfg
148	. $(atf_get_srcdir)/zpool_add.kshlib
149	. $(atf_get_srcdir)/zpool_add.cfg
150
151	verify_disk_count "$DISKS" 3
152	atf_expect_fail "PR 241070 dumpon opens geom devices non-exclusively"
153	ksh93 $(atf_get_srcdir)/setup.ksh || atf_fail "Setup failed"
154	ksh93 $(atf_get_srcdir)/zpool_add_005_pos.ksh || atf_fail "Testcase failed"
155}
156zpool_add_005_pos_cleanup()
157{
158	. $(atf_get_srcdir)/../../../include/default.cfg
159	. $(atf_get_srcdir)/zpool_add.kshlib
160	. $(atf_get_srcdir)/zpool_add.cfg
161
162	ksh93 $(atf_get_srcdir)/cleanup.ksh || atf_fail "Cleanup failed"
163}
164
165
166atf_test_case zpool_add_006_pos cleanup
167zpool_add_006_pos_head()
168{
169	atf_set "descr" "'zpool add [-f]' can add large numbers of vdevs to the specified pool without any errors."
170	atf_set "require.progs" "ksh93 zfs zpool"
171	atf_set "timeout" 2400
172}
173zpool_add_006_pos_body()
174{
175	. $(atf_get_srcdir)/../../../include/default.cfg
176	. $(atf_get_srcdir)/zpool_add.kshlib
177	. $(atf_get_srcdir)/zpool_add.cfg
178
179	verify_disk_count "$DISKS" 1
180	ksh93 $(atf_get_srcdir)/setup.ksh || atf_fail "Setup failed"
181	ksh93 $(atf_get_srcdir)/zpool_add_006_pos.ksh || atf_fail "Testcase failed"
182}
183zpool_add_006_pos_cleanup()
184{
185	. $(atf_get_srcdir)/../../../include/default.cfg
186	. $(atf_get_srcdir)/zpool_add.kshlib
187	. $(atf_get_srcdir)/zpool_add.cfg
188
189	ksh93 $(atf_get_srcdir)/cleanup.ksh || atf_fail "Cleanup failed"
190}
191
192
193atf_test_case zpool_add_007_neg cleanup
194zpool_add_007_neg_head()
195{
196	atf_set "descr" "'zpool add' should return an error with badly-formed parameters."
197	atf_set "require.progs" "ksh93 zpool"
198	atf_set "timeout" 2400
199}
200zpool_add_007_neg_body()
201{
202	. $(atf_get_srcdir)/../../../include/default.cfg
203	. $(atf_get_srcdir)/zpool_add.kshlib
204	. $(atf_get_srcdir)/zpool_add.cfg
205
206	verify_disk_count "$DISKS" 2
207	ksh93 $(atf_get_srcdir)/setup.ksh || atf_fail "Setup failed"
208	ksh93 $(atf_get_srcdir)/zpool_add_007_neg.ksh || atf_fail "Testcase failed"
209}
210zpool_add_007_neg_cleanup()
211{
212	. $(atf_get_srcdir)/../../../include/default.cfg
213	. $(atf_get_srcdir)/zpool_add.kshlib
214	. $(atf_get_srcdir)/zpool_add.cfg
215
216	ksh93 $(atf_get_srcdir)/cleanup.ksh || atf_fail "Cleanup failed"
217}
218
219
220atf_test_case zpool_add_008_neg cleanup
221zpool_add_008_neg_head()
222{
223	atf_set "descr" "'zpool add' should return an error with nonexistent pools and vdevs"
224	atf_set "require.progs" "ksh93 zpool"
225	atf_set "timeout" 2400
226}
227zpool_add_008_neg_body()
228{
229	. $(atf_get_srcdir)/../../../include/default.cfg
230	. $(atf_get_srcdir)/zpool_add.kshlib
231	. $(atf_get_srcdir)/zpool_add.cfg
232
233	verify_disk_count "$DISKS" 2
234	ksh93 $(atf_get_srcdir)/setup.ksh || atf_fail "Setup failed"
235	ksh93 $(atf_get_srcdir)/zpool_add_008_neg.ksh || atf_fail "Testcase failed"
236}
237zpool_add_008_neg_cleanup()
238{
239	. $(atf_get_srcdir)/../../../include/default.cfg
240	. $(atf_get_srcdir)/zpool_add.kshlib
241	. $(atf_get_srcdir)/zpool_add.cfg
242
243	ksh93 $(atf_get_srcdir)/cleanup.ksh || atf_fail "Cleanup failed"
244}
245
246
247atf_test_case zpool_add_009_neg cleanup
248zpool_add_009_neg_head()
249{
250	atf_set "descr" "'zpool add' should fail if vdevs are the same or vdev iscontained in the given pool."
251	atf_set "require.progs" "ksh93 zpool"
252	atf_set "timeout" 2400
253}
254zpool_add_009_neg_body()
255{
256	. $(atf_get_srcdir)/../../../include/default.cfg
257	. $(atf_get_srcdir)/zpool_add.kshlib
258	. $(atf_get_srcdir)/zpool_add.cfg
259
260	verify_disk_count "$DISKS" 2
261	ksh93 $(atf_get_srcdir)/setup.ksh || atf_fail "Setup failed"
262	ksh93 $(atf_get_srcdir)/zpool_add_009_neg.ksh || atf_fail "Testcase failed"
263}
264zpool_add_009_neg_cleanup()
265{
266	. $(atf_get_srcdir)/../../../include/default.cfg
267	. $(atf_get_srcdir)/zpool_add.kshlib
268	. $(atf_get_srcdir)/zpool_add.cfg
269
270	ksh93 $(atf_get_srcdir)/cleanup.ksh || atf_fail "Cleanup failed"
271}
272
273# Regression test for PR 225546.  "zpool add" asserts if the pool contains a
274# replacing vdev with a spare child.
275# Assertion failed: (nvlist_lookup_string(cnv, "path", &path) == 0), file /usr/home/alans/freebsd/head/cddl/contrib/opensolaris/cmd/zpool/zpool_vdev.c, line 694. /usr/tests/sys/cddl/zfs/tests/cli_root/zpool_add/zpool_add_010_pos.ksh[54]: log_must[69]: log_pos: line 206: 27710: Abort(coredump)
276atf_test_case zpool_add_010_pos cleanup
277zpool_add_010_pos_head()
278{
279	atf_set "descr" "'zpool add' can add devices, even if a replacing vdev with a spare child is present"
280	atf_set "require.progs" "ksh93 zpool"
281}
282zpool_add_010_pos_body()
283{
284	. $(atf_get_srcdir)/../../../include/default.cfg
285	. $(atf_get_srcdir)/zpool_add.kshlib
286	. $(atf_get_srcdir)/zpool_add.cfg
287
288	verify_disk_count "$DISKS" 5
289	ksh93 $(atf_get_srcdir)/zpool_add_010_pos.ksh || atf_fail "Testcase failed"
290}
291zpool_add_010_pos_cleanup()
292{
293	. $(atf_get_srcdir)/../../../include/default.cfg
294	. $(atf_get_srcdir)/zpool_add.kshlib
295	. $(atf_get_srcdir)/zpool_add.cfg
296
297	ksh93 $(atf_get_srcdir)/cleanup.ksh || atf_fail "Cleanup failed"
298}
299
300
301atf_init_test_cases()
302{
303
304	atf_add_test_case zpool_add_001_pos
305	atf_add_test_case zpool_add_002_pos
306	atf_add_test_case zpool_add_003_pos
307	atf_add_test_case zpool_add_004_pos
308	atf_add_test_case zpool_add_005_pos
309	atf_add_test_case zpool_add_006_pos
310	atf_add_test_case zpool_add_007_neg
311	atf_add_test_case zpool_add_008_neg
312	atf_add_test_case zpool_add_009_neg
313	atf_add_test_case zpool_add_010_pos
314}
315