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 cache_001_pos cleanup
30cache_001_pos_head()
31{
32	atf_set "descr" "Creating a pool with a cache device succeeds."
33	atf_set "require.progs" "ksh93 zpool"
34	atf_set "timeout" 1200
35}
36cache_001_pos_body()
37{
38	. $(atf_get_srcdir)/../../include/default.cfg
39	. $(atf_get_srcdir)/cache.kshlib
40	. $(atf_get_srcdir)/cache.cfg
41
42	verify_disk_count "$DISKS" 1
43	ksh93 $(atf_get_srcdir)/setup.ksh || atf_fail "Setup failed"
44	ksh93 $(atf_get_srcdir)/cache_001_pos.ksh || atf_fail "Testcase failed"
45}
46cache_001_pos_cleanup()
47{
48	. $(atf_get_srcdir)/../../include/default.cfg
49	. $(atf_get_srcdir)/cache.kshlib
50	. $(atf_get_srcdir)/cache.cfg
51
52	ksh93 $(atf_get_srcdir)/cleanup.ksh || atf_fail "Cleanup failed"
53}
54
55
56atf_test_case cache_002_pos cleanup
57cache_002_pos_head()
58{
59	atf_set "descr" "Adding a cache device to normal pool works."
60	atf_set "require.progs" "ksh93 zpool"
61	atf_set "timeout" 1200
62}
63cache_002_pos_body()
64{
65	. $(atf_get_srcdir)/../../include/default.cfg
66	. $(atf_get_srcdir)/cache.kshlib
67	. $(atf_get_srcdir)/cache.cfg
68
69	verify_disk_count "$DISKS" 1
70	ksh93 $(atf_get_srcdir)/setup.ksh || atf_fail "Setup failed"
71	ksh93 $(atf_get_srcdir)/cache_002_pos.ksh || atf_fail "Testcase failed"
72}
73cache_002_pos_cleanup()
74{
75	. $(atf_get_srcdir)/../../include/default.cfg
76	. $(atf_get_srcdir)/cache.kshlib
77	. $(atf_get_srcdir)/cache.cfg
78
79	ksh93 $(atf_get_srcdir)/cleanup.ksh || atf_fail "Cleanup failed"
80}
81
82
83atf_test_case cache_003_pos cleanup
84cache_003_pos_head()
85{
86	atf_set "descr" "Adding an extra cache device works."
87	atf_set "require.progs" "ksh93 zpool"
88	atf_set "timeout" 1200
89}
90cache_003_pos_body()
91{
92	. $(atf_get_srcdir)/../../include/default.cfg
93	. $(atf_get_srcdir)/cache.kshlib
94	. $(atf_get_srcdir)/cache.cfg
95
96	verify_disk_count "$DISKS" 2
97	ksh93 $(atf_get_srcdir)/setup.ksh || atf_fail "Setup failed"
98	ksh93 $(atf_get_srcdir)/cache_003_pos.ksh || atf_fail "Testcase failed"
99}
100cache_003_pos_cleanup()
101{
102	. $(atf_get_srcdir)/../../include/default.cfg
103	. $(atf_get_srcdir)/cache.kshlib
104	. $(atf_get_srcdir)/cache.cfg
105
106	ksh93 $(atf_get_srcdir)/cleanup.ksh || atf_fail "Cleanup failed"
107}
108
109
110atf_test_case cache_004_neg cleanup
111cache_004_neg_head()
112{
113	atf_set "descr" "Attaching a cache device fails."
114	atf_set "require.progs" "ksh93 zpool"
115	atf_set "timeout" 1200
116}
117cache_004_neg_body()
118{
119	. $(atf_get_srcdir)/../../include/default.cfg
120	. $(atf_get_srcdir)/cache.kshlib
121	. $(atf_get_srcdir)/cache.cfg
122
123	verify_disk_count "$DISKS" 2
124	ksh93 $(atf_get_srcdir)/setup.ksh || atf_fail "Setup failed"
125	ksh93 $(atf_get_srcdir)/cache_004_neg.ksh || atf_fail "Testcase failed"
126}
127cache_004_neg_cleanup()
128{
129	. $(atf_get_srcdir)/../../include/default.cfg
130	. $(atf_get_srcdir)/cache.kshlib
131	. $(atf_get_srcdir)/cache.cfg
132
133	ksh93 $(atf_get_srcdir)/cleanup.ksh || atf_fail "Cleanup failed"
134}
135
136
137atf_test_case cache_005_neg cleanup
138cache_005_neg_head()
139{
140	atf_set "descr" "Replacing a cache device fails."
141	atf_set "require.progs" "ksh93 zpool"
142	atf_set "timeout" 1200
143}
144cache_005_neg_body()
145{
146	. $(atf_get_srcdir)/../../include/default.cfg
147	. $(atf_get_srcdir)/cache.kshlib
148	. $(atf_get_srcdir)/cache.cfg
149
150	verify_disk_count "$DISKS" 2
151	ksh93 $(atf_get_srcdir)/setup.ksh || atf_fail "Setup failed"
152	ksh93 $(atf_get_srcdir)/cache_005_neg.ksh || atf_fail "Testcase failed"
153}
154cache_005_neg_cleanup()
155{
156	. $(atf_get_srcdir)/../../include/default.cfg
157	. $(atf_get_srcdir)/cache.kshlib
158	. $(atf_get_srcdir)/cache.cfg
159
160	ksh93 $(atf_get_srcdir)/cleanup.ksh || atf_fail "Cleanup failed"
161}
162
163
164atf_test_case cache_006_pos cleanup
165cache_006_pos_head()
166{
167	atf_set "descr" "Exporting and importing pool with cache devices passes."
168	atf_set "require.progs" "ksh93 zpool"
169	atf_set "timeout" 1200
170}
171cache_006_pos_body()
172{
173	. $(atf_get_srcdir)/../../include/default.cfg
174	. $(atf_get_srcdir)/cache.kshlib
175	. $(atf_get_srcdir)/cache.cfg
176
177	verify_disk_count "$DISKS" 2
178	ksh93 $(atf_get_srcdir)/setup.ksh || atf_fail "Setup failed"
179	ksh93 $(atf_get_srcdir)/cache_006_pos.ksh || atf_fail "Testcase failed"
180}
181cache_006_pos_cleanup()
182{
183	. $(atf_get_srcdir)/../../include/default.cfg
184	. $(atf_get_srcdir)/cache.kshlib
185	. $(atf_get_srcdir)/cache.cfg
186
187	ksh93 $(atf_get_srcdir)/cleanup.ksh || atf_fail "Cleanup failed"
188}
189
190
191atf_test_case cache_007_neg cleanup
192cache_007_neg_head()
193{
194	atf_set "descr" "A mirror/raidz/raidz2 cache is not supported."
195	atf_set "require.progs" "ksh93 zpool"
196	atf_set "timeout" 1200
197}
198cache_007_neg_body()
199{
200	. $(atf_get_srcdir)/../../include/default.cfg
201	. $(atf_get_srcdir)/cache.kshlib
202	. $(atf_get_srcdir)/cache.cfg
203
204	verify_disk_count "$DISKS" 2
205	ksh93 $(atf_get_srcdir)/setup.ksh || atf_fail "Setup failed"
206	ksh93 $(atf_get_srcdir)/cache_007_neg.ksh || atf_fail "Testcase failed"
207}
208cache_007_neg_cleanup()
209{
210	. $(atf_get_srcdir)/../../include/default.cfg
211	. $(atf_get_srcdir)/cache.kshlib
212	. $(atf_get_srcdir)/cache.cfg
213
214	ksh93 $(atf_get_srcdir)/cleanup.ksh || atf_fail "Cleanup failed"
215}
216
217
218atf_test_case cache_008_neg cleanup
219cache_008_neg_head()
220{
221	atf_set "descr" "A raidz/raidz2 cache can not be added to existed pool."
222	atf_set "require.progs" "ksh93 zpool"
223	atf_set "timeout" 1200
224}
225cache_008_neg_body()
226{
227	. $(atf_get_srcdir)/../../include/default.cfg
228	. $(atf_get_srcdir)/cache.kshlib
229	. $(atf_get_srcdir)/cache.cfg
230
231	verify_disk_count "$DISKS" 2
232	ksh93 $(atf_get_srcdir)/setup.ksh || atf_fail "Setup failed"
233	ksh93 $(atf_get_srcdir)/cache_008_neg.ksh || atf_fail "Testcase failed"
234}
235cache_008_neg_cleanup()
236{
237	. $(atf_get_srcdir)/../../include/default.cfg
238	. $(atf_get_srcdir)/cache.kshlib
239	. $(atf_get_srcdir)/cache.cfg
240
241	ksh93 $(atf_get_srcdir)/cleanup.ksh || atf_fail "Cleanup failed"
242}
243
244
245atf_test_case cache_009_pos cleanup
246cache_009_pos_head()
247{
248	atf_set "descr" "Offline and online a cache device succeed."
249	atf_set "require.progs" "ksh93 zpool"
250	atf_set "timeout" 1200
251}
252cache_009_pos_body()
253{
254	. $(atf_get_srcdir)/../../include/default.cfg
255	. $(atf_get_srcdir)/cache.kshlib
256	. $(atf_get_srcdir)/cache.cfg
257
258	verify_disk_count "$DISKS" 2
259	ksh93 $(atf_get_srcdir)/setup.ksh || atf_fail "Setup failed"
260	ksh93 $(atf_get_srcdir)/cache_009_pos.ksh || atf_fail "Testcase failed"
261}
262cache_009_pos_cleanup()
263{
264	. $(atf_get_srcdir)/../../include/default.cfg
265	. $(atf_get_srcdir)/cache.kshlib
266	. $(atf_get_srcdir)/cache.cfg
267
268	ksh93 $(atf_get_srcdir)/cleanup.ksh || atf_fail "Cleanup failed"
269}
270
271
272atf_test_case cache_010_neg cleanup
273cache_010_neg_head()
274{
275	atf_set "descr" "Cache device can only be disk or slice."
276	atf_set "require.progs" "ksh93 zfs zpool"
277	atf_set "timeout" 1200
278}
279cache_010_neg_body()
280{
281	. $(atf_get_srcdir)/../../include/default.cfg
282	. $(atf_get_srcdir)/cache.kshlib
283	. $(atf_get_srcdir)/cache.cfg
284
285	verify_disk_count "$DISKS" 1
286	ksh93 $(atf_get_srcdir)/setup.ksh || atf_fail "Setup failed"
287	ksh93 $(atf_get_srcdir)/cache_010_neg.ksh || atf_fail "Testcase failed"
288}
289cache_010_neg_cleanup()
290{
291	. $(atf_get_srcdir)/../../include/default.cfg
292	. $(atf_get_srcdir)/cache.kshlib
293	. $(atf_get_srcdir)/cache.cfg
294
295	ksh93 $(atf_get_srcdir)/cleanup.ksh || atf_fail "Cleanup failed"
296}
297
298
299atf_test_case cache_011_pos cleanup
300cache_011_pos_head()
301{
302	atf_set "descr" "Remove cache device from pool with spare device should succeed"
303	atf_set "require.progs" "ksh93 zpool"
304	atf_set "timeout" 1200
305}
306cache_011_pos_body()
307{
308	. $(atf_get_srcdir)/../../include/default.cfg
309	. $(atf_get_srcdir)/cache.kshlib
310	. $(atf_get_srcdir)/cache.cfg
311
312	verify_disk_count "$DISKS" 2
313	ksh93 $(atf_get_srcdir)/setup.ksh || atf_fail "Setup failed"
314	ksh93 $(atf_get_srcdir)/cache_011_pos.ksh || atf_fail "Testcase failed"
315}
316cache_011_pos_cleanup()
317{
318	. $(atf_get_srcdir)/../../include/default.cfg
319	. $(atf_get_srcdir)/cache.kshlib
320	. $(atf_get_srcdir)/cache.cfg
321
322	ksh93 $(atf_get_srcdir)/cleanup.ksh || atf_fail "Cleanup failed"
323}
324
325
326atf_init_test_cases()
327{
328
329	atf_add_test_case cache_001_pos
330	atf_add_test_case cache_002_pos
331	atf_add_test_case cache_003_pos
332	atf_add_test_case cache_004_neg
333	atf_add_test_case cache_005_neg
334	atf_add_test_case cache_006_pos
335	atf_add_test_case cache_007_neg
336	atf_add_test_case cache_008_neg
337	atf_add_test_case cache_009_pos
338	atf_add_test_case cache_010_neg
339	atf_add_test_case cache_011_pos
340}
341