xref: /freebsd/tests/sys/cddl/zfs/tests/slog/slog_test.sh (revision 4d846d26)
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 slog_001_pos cleanup
30slog_001_pos_head()
31{
32	atf_set "descr" "Creating a pool with a log device succeeds."
33	atf_set "require.progs" "ksh93 zpool"
34	atf_set "timeout" 1200
35}
36slog_001_pos_body()
37{
38	. $(atf_get_srcdir)/../../include/default.cfg
39	. $(atf_get_srcdir)/slog.kshlib
40	. $(atf_get_srcdir)/slog.cfg
41
42	ksh93 $(atf_get_srcdir)/setup.ksh || atf_fail "Setup failed"
43	ksh93 $(atf_get_srcdir)/slog_001_pos.ksh || atf_fail "Testcase failed"
44}
45slog_001_pos_cleanup()
46{
47	. $(atf_get_srcdir)/../../include/default.cfg
48	. $(atf_get_srcdir)/slog.kshlib
49	. $(atf_get_srcdir)/slog.cfg
50
51	ksh93 $(atf_get_srcdir)/cleanup.ksh || atf_fail "Cleanup failed"
52}
53
54
55atf_test_case slog_002_pos cleanup
56slog_002_pos_head()
57{
58	atf_set "descr" "Adding a log device to normal pool works."
59	atf_set "require.progs" "ksh93 zpool"
60	atf_set "timeout" 1200
61}
62slog_002_pos_body()
63{
64	. $(atf_get_srcdir)/../../include/default.cfg
65	. $(atf_get_srcdir)/slog.kshlib
66	. $(atf_get_srcdir)/slog.cfg
67
68	ksh93 $(atf_get_srcdir)/setup.ksh || atf_fail "Setup failed"
69	ksh93 $(atf_get_srcdir)/slog_002_pos.ksh || atf_fail "Testcase failed"
70}
71slog_002_pos_cleanup()
72{
73	. $(atf_get_srcdir)/../../include/default.cfg
74	. $(atf_get_srcdir)/slog.kshlib
75	. $(atf_get_srcdir)/slog.cfg
76
77	ksh93 $(atf_get_srcdir)/cleanup.ksh || atf_fail "Cleanup failed"
78}
79
80
81atf_test_case slog_003_pos cleanup
82slog_003_pos_head()
83{
84	atf_set "descr" "Adding an extra log device works."
85	atf_set "require.progs" "ksh93 zpool"
86	atf_set "timeout" 1200
87}
88slog_003_pos_body()
89{
90	. $(atf_get_srcdir)/../../include/default.cfg
91	. $(atf_get_srcdir)/slog.kshlib
92	. $(atf_get_srcdir)/slog.cfg
93
94	ksh93 $(atf_get_srcdir)/setup.ksh || atf_fail "Setup failed"
95	ksh93 $(atf_get_srcdir)/slog_003_pos.ksh || atf_fail "Testcase failed"
96}
97slog_003_pos_cleanup()
98{
99	. $(atf_get_srcdir)/../../include/default.cfg
100	. $(atf_get_srcdir)/slog.kshlib
101	. $(atf_get_srcdir)/slog.cfg
102
103	ksh93 $(atf_get_srcdir)/cleanup.ksh || atf_fail "Cleanup failed"
104}
105
106
107atf_test_case slog_004_pos cleanup
108slog_004_pos_head()
109{
110	atf_set "descr" "Attaching a log device passes."
111	atf_set "require.progs" "ksh93 zpool"
112	atf_set "timeout" 1200
113}
114slog_004_pos_body()
115{
116	. $(atf_get_srcdir)/../../include/default.cfg
117	. $(atf_get_srcdir)/slog.kshlib
118	. $(atf_get_srcdir)/slog.cfg
119
120	ksh93 $(atf_get_srcdir)/setup.ksh || atf_fail "Setup failed"
121	ksh93 $(atf_get_srcdir)/slog_004_pos.ksh || atf_fail "Testcase failed"
122}
123slog_004_pos_cleanup()
124{
125	. $(atf_get_srcdir)/../../include/default.cfg
126	. $(atf_get_srcdir)/slog.kshlib
127	. $(atf_get_srcdir)/slog.cfg
128
129	ksh93 $(atf_get_srcdir)/cleanup.ksh || atf_fail "Cleanup failed"
130}
131
132
133atf_test_case slog_005_pos cleanup
134slog_005_pos_head()
135{
136	atf_set "descr" "Detaching a log device passes."
137	atf_set "require.progs" "ksh93 zpool"
138	atf_set "timeout" 1200
139}
140slog_005_pos_body()
141{
142	. $(atf_get_srcdir)/../../include/default.cfg
143	. $(atf_get_srcdir)/slog.kshlib
144	. $(atf_get_srcdir)/slog.cfg
145
146	ksh93 $(atf_get_srcdir)/setup.ksh || atf_fail "Setup failed"
147	ksh93 $(atf_get_srcdir)/slog_005_pos.ksh || atf_fail "Testcase failed"
148}
149slog_005_pos_cleanup()
150{
151	. $(atf_get_srcdir)/../../include/default.cfg
152	. $(atf_get_srcdir)/slog.kshlib
153	. $(atf_get_srcdir)/slog.cfg
154
155	ksh93 $(atf_get_srcdir)/cleanup.ksh || atf_fail "Cleanup failed"
156}
157
158
159atf_test_case slog_006_pos cleanup
160slog_006_pos_head()
161{
162	atf_set "descr" "Replacing a log device passes."
163	atf_set "require.progs" "ksh93 zpool"
164	atf_set "timeout" 1200
165}
166slog_006_pos_body()
167{
168	. $(atf_get_srcdir)/../../include/default.cfg
169	. $(atf_get_srcdir)/slog.kshlib
170	. $(atf_get_srcdir)/slog.cfg
171
172	ksh93 $(atf_get_srcdir)/setup.ksh || atf_fail "Setup failed"
173	ksh93 $(atf_get_srcdir)/slog_006_pos.ksh || atf_fail "Testcase failed"
174}
175slog_006_pos_cleanup()
176{
177	. $(atf_get_srcdir)/../../include/default.cfg
178	. $(atf_get_srcdir)/slog.kshlib
179	. $(atf_get_srcdir)/slog.cfg
180
181	ksh93 $(atf_get_srcdir)/cleanup.ksh || atf_fail "Cleanup failed"
182}
183
184
185atf_test_case slog_007_pos cleanup
186slog_007_pos_head()
187{
188	atf_set "descr" "Exporting and importing pool with log devices passes."
189	atf_set "require.progs" "ksh93 zpool"
190	atf_set "timeout" 1200
191}
192slog_007_pos_body()
193{
194	. $(atf_get_srcdir)/../../include/default.cfg
195	. $(atf_get_srcdir)/slog.kshlib
196	. $(atf_get_srcdir)/slog.cfg
197
198	ksh93 $(atf_get_srcdir)/setup.ksh || atf_fail "Setup failed"
199	ksh93 $(atf_get_srcdir)/slog_007_pos.ksh || atf_fail "Testcase failed"
200}
201slog_007_pos_cleanup()
202{
203	. $(atf_get_srcdir)/../../include/default.cfg
204	. $(atf_get_srcdir)/slog.kshlib
205	. $(atf_get_srcdir)/slog.cfg
206
207	ksh93 $(atf_get_srcdir)/cleanup.ksh || atf_fail "Cleanup failed"
208}
209
210
211atf_test_case slog_008_neg cleanup
212slog_008_neg_head()
213{
214	atf_set "descr" "A raidz/raidz2 log is not supported."
215	atf_set "require.progs" "ksh93 zpool"
216	atf_set "timeout" 1200
217}
218slog_008_neg_body()
219{
220	. $(atf_get_srcdir)/../../include/default.cfg
221	. $(atf_get_srcdir)/slog.kshlib
222	. $(atf_get_srcdir)/slog.cfg
223
224	ksh93 $(atf_get_srcdir)/setup.ksh || atf_fail "Setup failed"
225	ksh93 $(atf_get_srcdir)/slog_008_neg.ksh || atf_fail "Testcase failed"
226}
227slog_008_neg_cleanup()
228{
229	. $(atf_get_srcdir)/../../include/default.cfg
230	. $(atf_get_srcdir)/slog.kshlib
231	. $(atf_get_srcdir)/slog.cfg
232
233	ksh93 $(atf_get_srcdir)/cleanup.ksh || atf_fail "Cleanup failed"
234}
235
236
237atf_test_case slog_009_neg cleanup
238slog_009_neg_head()
239{
240	atf_set "descr" "A raidz/raidz2 log can not be added to existed pool."
241	atf_set "require.progs" "ksh93 zpool"
242	atf_set "timeout" 1200
243}
244slog_009_neg_body()
245{
246	. $(atf_get_srcdir)/../../include/default.cfg
247	. $(atf_get_srcdir)/slog.kshlib
248	. $(atf_get_srcdir)/slog.cfg
249
250	ksh93 $(atf_get_srcdir)/setup.ksh || atf_fail "Setup failed"
251	ksh93 $(atf_get_srcdir)/slog_009_neg.ksh || atf_fail "Testcase failed"
252}
253slog_009_neg_cleanup()
254{
255	. $(atf_get_srcdir)/../../include/default.cfg
256	. $(atf_get_srcdir)/slog.kshlib
257	. $(atf_get_srcdir)/slog.cfg
258
259	ksh93 $(atf_get_srcdir)/cleanup.ksh || atf_fail "Cleanup failed"
260}
261
262
263atf_test_case slog_010_neg cleanup
264slog_010_neg_head()
265{
266	atf_set "descr" "Slog device can not be replaced with spare device."
267	atf_set "require.progs" "ksh93 zpool"
268	atf_set "timeout" 1200
269}
270slog_010_neg_body()
271{
272	. $(atf_get_srcdir)/../../include/default.cfg
273	. $(atf_get_srcdir)/slog.kshlib
274	. $(atf_get_srcdir)/slog.cfg
275
276	ksh93 $(atf_get_srcdir)/setup.ksh || atf_fail "Setup failed"
277	ksh93 $(atf_get_srcdir)/slog_010_neg.ksh || atf_fail "Testcase failed"
278}
279slog_010_neg_cleanup()
280{
281	. $(atf_get_srcdir)/../../include/default.cfg
282	. $(atf_get_srcdir)/slog.kshlib
283	. $(atf_get_srcdir)/slog.cfg
284
285	ksh93 $(atf_get_srcdir)/cleanup.ksh || atf_fail "Cleanup failed"
286}
287
288
289atf_test_case slog_011_neg cleanup
290slog_011_neg_head()
291{
292	atf_set "descr" "Offline and online a log device passes."
293	atf_set "require.progs" "ksh93 zpool"
294	atf_set "timeout" 1200
295}
296slog_011_neg_body()
297{
298	. $(atf_get_srcdir)/../../include/default.cfg
299	. $(atf_get_srcdir)/slog.kshlib
300	. $(atf_get_srcdir)/slog.cfg
301
302	ksh93 $(atf_get_srcdir)/setup.ksh || atf_fail "Setup failed"
303	ksh93 $(atf_get_srcdir)/slog_011_neg.ksh || atf_fail "Testcase failed"
304}
305slog_011_neg_cleanup()
306{
307	. $(atf_get_srcdir)/../../include/default.cfg
308	. $(atf_get_srcdir)/slog.kshlib
309	. $(atf_get_srcdir)/slog.cfg
310
311	ksh93 $(atf_get_srcdir)/cleanup.ksh || atf_fail "Cleanup failed"
312}
313
314
315atf_test_case slog_012_neg cleanup
316slog_012_neg_head()
317{
318	atf_set "descr" "Pool can survive when one of mirror log device get corrupted."
319	atf_set "require.progs" "ksh93 zpool"
320	atf_set "timeout" 1200
321}
322slog_012_neg_body()
323{
324	. $(atf_get_srcdir)/../../include/default.cfg
325	. $(atf_get_srcdir)/slog.kshlib
326	. $(atf_get_srcdir)/slog.cfg
327
328	ksh93 $(atf_get_srcdir)/setup.ksh || atf_fail "Setup failed"
329	ksh93 $(atf_get_srcdir)/slog_012_neg.ksh || atf_fail "Testcase failed"
330}
331slog_012_neg_cleanup()
332{
333	. $(atf_get_srcdir)/../../include/default.cfg
334	. $(atf_get_srcdir)/slog.kshlib
335	. $(atf_get_srcdir)/slog.cfg
336
337	ksh93 $(atf_get_srcdir)/cleanup.ksh || atf_fail "Cleanup failed"
338}
339
340
341atf_test_case slog_013_pos cleanup
342slog_013_pos_head()
343{
344	atf_set "descr" "Verify slog device can be disk, file, lofi device or any devicethat presents a block interface."
345	atf_set "require.progs" "ksh93 zpool lofiadm"
346	atf_set "timeout" 1200
347}
348slog_013_pos_body()
349{
350	. $(atf_get_srcdir)/../../include/default.cfg
351	. $(atf_get_srcdir)/slog.kshlib
352	. $(atf_get_srcdir)/slog.cfg
353
354	verify_disk_count "$DISKS" 2
355	ksh93 $(atf_get_srcdir)/setup.ksh || atf_fail "Setup failed"
356	ksh93 $(atf_get_srcdir)/slog_013_pos.ksh || atf_fail "Testcase failed"
357}
358slog_013_pos_cleanup()
359{
360	. $(atf_get_srcdir)/../../include/default.cfg
361	. $(atf_get_srcdir)/slog.kshlib
362	. $(atf_get_srcdir)/slog.cfg
363
364	ksh93 $(atf_get_srcdir)/cleanup.ksh || atf_fail "Cleanup failed"
365}
366
367
368atf_test_case slog_014_pos cleanup
369slog_014_pos_head()
370{
371	atf_set "descr" "log device can survive when one of the pool device get corrupted."
372	atf_set "require.progs" "ksh93 zpool"
373	atf_set "timeout" 1200
374}
375slog_014_pos_body()
376{
377	. $(atf_get_srcdir)/../../include/default.cfg
378	. $(atf_get_srcdir)/slog.kshlib
379	. $(atf_get_srcdir)/slog.cfg
380
381	ksh93 $(atf_get_srcdir)/setup.ksh || atf_fail "Setup failed"
382	ksh93 $(atf_get_srcdir)/slog_014_pos.ksh || atf_fail "Testcase failed"
383}
384slog_014_pos_cleanup()
385{
386	. $(atf_get_srcdir)/../../include/default.cfg
387	. $(atf_get_srcdir)/slog.kshlib
388	. $(atf_get_srcdir)/slog.cfg
389
390	ksh93 $(atf_get_srcdir)/cleanup.ksh || atf_fail "Cleanup failed"
391}
392
393
394atf_init_test_cases()
395{
396
397	atf_add_test_case slog_001_pos
398	atf_add_test_case slog_002_pos
399	atf_add_test_case slog_003_pos
400	atf_add_test_case slog_004_pos
401	atf_add_test_case slog_005_pos
402	atf_add_test_case slog_006_pos
403	atf_add_test_case slog_007_pos
404	atf_add_test_case slog_008_neg
405	atf_add_test_case slog_009_neg
406	atf_add_test_case slog_010_neg
407	atf_add_test_case slog_011_neg
408	atf_add_test_case slog_012_neg
409	atf_add_test_case slog_013_pos
410	atf_add_test_case slog_014_pos
411}
412