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