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" 5
152	ksh93 $(atf_get_srcdir)/setup.ksh || atf_fail "Setup failed"
153	ksh93 $(atf_get_srcdir)/zpool_add_005_pos.ksh || atf_fail "Testcase failed"
154}
155zpool_add_005_pos_cleanup()
156{
157	. $(atf_get_srcdir)/../../../include/default.cfg
158	. $(atf_get_srcdir)/zpool_add.kshlib
159	. $(atf_get_srcdir)/zpool_add.cfg
160
161	ksh93 $(atf_get_srcdir)/cleanup.ksh || atf_fail "Cleanup failed"
162}
163
164
165atf_test_case zpool_add_006_pos cleanup
166zpool_add_006_pos_head()
167{
168	atf_set "descr" "'zpool add [-f]' can add large numbers of vdevs to the specified pool without any errors."
169	atf_set "require.progs" "ksh93 zfs zpool"
170	atf_set "timeout" 2400
171}
172zpool_add_006_pos_body()
173{
174	. $(atf_get_srcdir)/../../../include/default.cfg
175	. $(atf_get_srcdir)/zpool_add.kshlib
176	. $(atf_get_srcdir)/zpool_add.cfg
177
178	verify_disk_count "$DISKS" 1
179	ksh93 $(atf_get_srcdir)/setup.ksh || atf_fail "Setup failed"
180	ksh93 $(atf_get_srcdir)/zpool_add_006_pos.ksh || atf_fail "Testcase failed"
181}
182zpool_add_006_pos_cleanup()
183{
184	. $(atf_get_srcdir)/../../../include/default.cfg
185	. $(atf_get_srcdir)/zpool_add.kshlib
186	. $(atf_get_srcdir)/zpool_add.cfg
187
188	ksh93 $(atf_get_srcdir)/cleanup.ksh || atf_fail "Cleanup failed"
189}
190
191
192atf_test_case zpool_add_007_neg cleanup
193zpool_add_007_neg_head()
194{
195	atf_set "descr" "'zpool add' should return an error with badly-formed parameters."
196	atf_set "require.progs" "ksh93 zpool"
197	atf_set "timeout" 2400
198}
199zpool_add_007_neg_body()
200{
201	. $(atf_get_srcdir)/../../../include/default.cfg
202	. $(atf_get_srcdir)/zpool_add.kshlib
203	. $(atf_get_srcdir)/zpool_add.cfg
204
205	verify_disk_count "$DISKS" 2
206	ksh93 $(atf_get_srcdir)/setup.ksh || atf_fail "Setup failed"
207	ksh93 $(atf_get_srcdir)/zpool_add_007_neg.ksh || atf_fail "Testcase failed"
208}
209zpool_add_007_neg_cleanup()
210{
211	. $(atf_get_srcdir)/../../../include/default.cfg
212	. $(atf_get_srcdir)/zpool_add.kshlib
213	. $(atf_get_srcdir)/zpool_add.cfg
214
215	ksh93 $(atf_get_srcdir)/cleanup.ksh || atf_fail "Cleanup failed"
216}
217
218
219atf_test_case zpool_add_008_neg cleanup
220zpool_add_008_neg_head()
221{
222	atf_set "descr" "'zpool add' should return an error with nonexistent pools and vdevs"
223	atf_set "require.progs" "ksh93 zpool"
224	atf_set "timeout" 2400
225}
226zpool_add_008_neg_body()
227{
228	. $(atf_get_srcdir)/../../../include/default.cfg
229	. $(atf_get_srcdir)/zpool_add.kshlib
230	. $(atf_get_srcdir)/zpool_add.cfg
231
232	verify_disk_count "$DISKS" 2
233	ksh93 $(atf_get_srcdir)/setup.ksh || atf_fail "Setup failed"
234	ksh93 $(atf_get_srcdir)/zpool_add_008_neg.ksh || atf_fail "Testcase failed"
235}
236zpool_add_008_neg_cleanup()
237{
238	. $(atf_get_srcdir)/../../../include/default.cfg
239	. $(atf_get_srcdir)/zpool_add.kshlib
240	. $(atf_get_srcdir)/zpool_add.cfg
241
242	ksh93 $(atf_get_srcdir)/cleanup.ksh || atf_fail "Cleanup failed"
243}
244
245
246atf_test_case zpool_add_009_neg cleanup
247zpool_add_009_neg_head()
248{
249	atf_set "descr" "'zpool add' should fail if vdevs are the same or vdev iscontained in the given pool."
250	atf_set "require.progs" "ksh93 zpool"
251	atf_set "timeout" 2400
252}
253zpool_add_009_neg_body()
254{
255	. $(atf_get_srcdir)/../../../include/default.cfg
256	. $(atf_get_srcdir)/zpool_add.kshlib
257	. $(atf_get_srcdir)/zpool_add.cfg
258
259	verify_disk_count "$DISKS" 2
260	ksh93 $(atf_get_srcdir)/setup.ksh || atf_fail "Setup failed"
261	ksh93 $(atf_get_srcdir)/zpool_add_009_neg.ksh || atf_fail "Testcase failed"
262}
263zpool_add_009_neg_cleanup()
264{
265	. $(atf_get_srcdir)/../../../include/default.cfg
266	. $(atf_get_srcdir)/zpool_add.kshlib
267	. $(atf_get_srcdir)/zpool_add.cfg
268
269	ksh93 $(atf_get_srcdir)/cleanup.ksh || atf_fail "Cleanup failed"
270}
271
272# Regression test for PR 225546.  "zpool add" asserts if the pool contains a
273# replacing vdev with a spare child.
274# 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)
275atf_test_case zpool_add_010_pos cleanup
276zpool_add_010_pos_head()
277{
278	atf_set "descr" "'zpool add' can add devices, even if a replacing vdev with a spare child is present"
279	atf_set "require.progs" "ksh93 zpool"
280}
281zpool_add_010_pos_body()
282{
283	. $(atf_get_srcdir)/../../../include/default.cfg
284	. $(atf_get_srcdir)/zpool_add.kshlib
285	. $(atf_get_srcdir)/zpool_add.cfg
286
287	verify_disk_count "$DISKS" 5
288	ksh93 $(atf_get_srcdir)/zpool_add_010_pos.ksh || atf_fail "Testcase failed"
289}
290zpool_add_010_pos_cleanup()
291{
292	. $(atf_get_srcdir)/../../../include/default.cfg
293	. $(atf_get_srcdir)/zpool_add.kshlib
294	. $(atf_get_srcdir)/zpool_add.cfg
295
296	ksh93 $(atf_get_srcdir)/cleanup.ksh || atf_fail "Cleanup failed"
297}
298
299
300atf_init_test_cases()
301{
302
303	atf_add_test_case zpool_add_001_pos
304	atf_add_test_case zpool_add_002_pos
305	atf_add_test_case zpool_add_003_pos
306	atf_add_test_case zpool_add_004_pos
307	atf_add_test_case zpool_add_005_pos
308	atf_add_test_case zpool_add_006_pos
309	atf_add_test_case zpool_add_007_neg
310	atf_add_test_case zpool_add_008_neg
311	atf_add_test_case zpool_add_009_neg
312	atf_add_test_case zpool_add_010_pos
313}
314