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