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_import_002_pos cleanup
30zpool_import_002_pos_head()
31{
32	atf_set "descr" "Verify that an exported pool can be imported and cannot be imported more than once."
33	atf_set "require.progs"  zfs zpool sum zdb
34	atf_set "timeout" 2400
35}
36zpool_import_002_pos_body()
37{
38	. $(atf_get_srcdir)/../../../include/default.cfg
39	. $(atf_get_srcdir)/zpool_import.cfg
40
41	verify_disk_count "$DISKS" 2
42	ksh93 $(atf_get_srcdir)/setup.ksh || atf_fail "Setup failed"
43	ksh93 $(atf_get_srcdir)/zpool_import_002_pos.ksh || atf_fail "Testcase failed"
44}
45zpool_import_002_pos_cleanup()
46{
47	. $(atf_get_srcdir)/../../../include/default.cfg
48	. $(atf_get_srcdir)/zpool_import.cfg
49
50	ksh93 $(atf_get_srcdir)/cleanup.ksh || atf_fail "Cleanup failed"
51}
52
53
54atf_test_case zpool_import_003_pos cleanup
55zpool_import_003_pos_head()
56{
57	atf_set "descr" "Destroyed pools are not listed unless with -D option is specified."
58	atf_set "require.progs"  zpool zfs
59	atf_set "timeout" 2400
60}
61zpool_import_003_pos_body()
62{
63	. $(atf_get_srcdir)/../../../include/default.cfg
64	. $(atf_get_srcdir)/zpool_import.cfg
65
66	verify_disk_count "$DISKS" 2
67	ksh93 $(atf_get_srcdir)/setup.ksh || atf_fail "Setup failed"
68	ksh93 $(atf_get_srcdir)/zpool_import_003_pos.ksh || atf_fail "Testcase failed"
69}
70zpool_import_003_pos_cleanup()
71{
72	. $(atf_get_srcdir)/../../../include/default.cfg
73	. $(atf_get_srcdir)/zpool_import.cfg
74
75	ksh93 $(atf_get_srcdir)/cleanup.ksh || atf_fail "Cleanup failed"
76}
77
78
79atf_test_case zpool_import_004_pos cleanup
80zpool_import_004_pos_head()
81{
82	atf_set "descr" "Destroyed pools devices was moved to another directory,it still can be imported correctly."
83	atf_set "require.progs"  zpool zfs zdb
84	atf_set "timeout" 2400
85}
86zpool_import_004_pos_body()
87{
88	. $(atf_get_srcdir)/../../../include/default.cfg
89	. $(atf_get_srcdir)/zpool_import.cfg
90
91	verify_disk_count "$DISKS" 2
92	ksh93 $(atf_get_srcdir)/setup.ksh || atf_fail "Setup failed"
93	ksh93 $(atf_get_srcdir)/zpool_import_004_pos.ksh || atf_fail "Testcase failed"
94}
95zpool_import_004_pos_cleanup()
96{
97	. $(atf_get_srcdir)/../../../include/default.cfg
98	. $(atf_get_srcdir)/zpool_import.cfg
99
100	ksh93 $(atf_get_srcdir)/cleanup.ksh || atf_fail "Cleanup failed"
101}
102
103
104atf_test_case zpool_import_005_pos cleanup
105zpool_import_005_pos_head()
106{
107	atf_set "descr" "Destroyed pools devices was renamed, it still can be importedcorrectly."
108	atf_set "require.progs"  zpool zfs zdb
109	atf_set "timeout" 2400
110}
111zpool_import_005_pos_body()
112{
113	. $(atf_get_srcdir)/../../../include/default.cfg
114	. $(atf_get_srcdir)/zpool_import.cfg
115
116	verify_disk_count "$DISKS" 2
117	ksh93 $(atf_get_srcdir)/setup.ksh || atf_fail "Setup failed"
118	ksh93 $(atf_get_srcdir)/zpool_import_005_pos.ksh || atf_fail "Testcase failed"
119}
120zpool_import_005_pos_cleanup()
121{
122	. $(atf_get_srcdir)/../../../include/default.cfg
123	. $(atf_get_srcdir)/zpool_import.cfg
124
125	ksh93 $(atf_get_srcdir)/cleanup.ksh || atf_fail "Cleanup failed"
126}
127
128
129atf_test_case zpool_import_006_pos cleanup
130zpool_import_006_pos_head()
131{
132	atf_set "descr" "For mirror, N-1 destroyed pools devices was removed or usedby other pool, it still can be imported correctly."
133	atf_set "require.progs"  zpool zfs zdb
134	atf_set "timeout" 2400
135}
136zpool_import_006_pos_body()
137{
138	. $(atf_get_srcdir)/../../../include/default.cfg
139	. $(atf_get_srcdir)/zpool_import.cfg
140
141	verify_disk_count "$DISKS" 2
142	ksh93 $(atf_get_srcdir)/setup.ksh || atf_fail "Setup failed"
143	ksh93 $(atf_get_srcdir)/zpool_import_006_pos.ksh || atf_fail "Testcase failed"
144}
145zpool_import_006_pos_cleanup()
146{
147	. $(atf_get_srcdir)/../../../include/default.cfg
148	. $(atf_get_srcdir)/zpool_import.cfg
149
150	ksh93 $(atf_get_srcdir)/cleanup.ksh || atf_fail "Cleanup failed"
151}
152
153
154atf_test_case zpool_import_007_pos cleanup
155zpool_import_007_pos_head()
156{
157	atf_set "descr" "For raidz, one destroyed pools devices was removed or used byother pool, it still can be imported correctly."
158	atf_set "require.progs"  zpool zfs zdb
159	atf_set "timeout" 2400
160}
161zpool_import_007_pos_body()
162{
163	. $(atf_get_srcdir)/../../../include/default.cfg
164	. $(atf_get_srcdir)/zpool_import.cfg
165
166	verify_disk_count "$DISKS" 2
167	ksh93 $(atf_get_srcdir)/setup.ksh || atf_fail "Setup failed"
168	ksh93 $(atf_get_srcdir)/zpool_import_007_pos.ksh || atf_fail "Testcase failed"
169}
170zpool_import_007_pos_cleanup()
171{
172	. $(atf_get_srcdir)/../../../include/default.cfg
173	. $(atf_get_srcdir)/zpool_import.cfg
174
175	ksh93 $(atf_get_srcdir)/cleanup.ksh || atf_fail "Cleanup failed"
176}
177
178
179atf_test_case zpool_import_008_pos cleanup
180zpool_import_008_pos_head()
181{
182	atf_set "descr" "For raidz2, two destroyed pools devices was removed or used byother pool, it still can be imported correctly."
183	atf_set "require.progs"  zpool zfs zdb
184	atf_set "timeout" 2400
185}
186zpool_import_008_pos_body()
187{
188	. $(atf_get_srcdir)/../../../include/default.cfg
189	. $(atf_get_srcdir)/zpool_import.cfg
190
191	verify_disk_count "$DISKS" 2
192	ksh93 $(atf_get_srcdir)/setup.ksh || atf_fail "Setup failed"
193	ksh93 $(atf_get_srcdir)/zpool_import_008_pos.ksh || atf_fail "Testcase failed"
194}
195zpool_import_008_pos_cleanup()
196{
197	. $(atf_get_srcdir)/../../../include/default.cfg
198	. $(atf_get_srcdir)/zpool_import.cfg
199
200	ksh93 $(atf_get_srcdir)/cleanup.ksh || atf_fail "Cleanup failed"
201}
202
203
204atf_test_case zpool_import_009_neg cleanup
205zpool_import_009_neg_head()
206{
207	atf_set "descr" "Badly-formed 'zpool import' with inapplicable scenariosshould return an error."
208	atf_set "require.progs"  zfs zpool
209	atf_set "timeout" 2400
210}
211zpool_import_009_neg_body()
212{
213	. $(atf_get_srcdir)/../../../include/default.cfg
214	. $(atf_get_srcdir)/zpool_import.cfg
215
216	verify_disk_count "$DISKS" 2
217	ksh93 $(atf_get_srcdir)/setup.ksh || atf_fail "Setup failed"
218	ksh93 $(atf_get_srcdir)/zpool_import_009_neg.ksh || atf_fail "Testcase failed"
219}
220zpool_import_009_neg_cleanup()
221{
222	. $(atf_get_srcdir)/../../../include/default.cfg
223	. $(atf_get_srcdir)/zpool_import.cfg
224
225	ksh93 $(atf_get_srcdir)/cleanup.ksh || atf_fail "Cleanup failed"
226}
227
228
229atf_test_case zpool_import_010_pos cleanup
230zpool_import_010_pos_head()
231{
232	atf_set "descr" "'zpool -D -a' can import all the specified directoriesdestroyed pools."
233	atf_set "require.progs"  zpool zfs
234	atf_set "timeout" 2400
235}
236zpool_import_010_pos_body()
237{
238	. $(atf_get_srcdir)/../../../include/default.cfg
239	. $(atf_get_srcdir)/zpool_import.cfg
240
241	verify_disk_count "$DISKS" 2
242	ksh93 $(atf_get_srcdir)/setup.ksh || atf_fail "Setup failed"
243	ksh93 $(atf_get_srcdir)/zpool_import_010_pos.ksh || atf_fail "Testcase failed"
244}
245zpool_import_010_pos_cleanup()
246{
247	. $(atf_get_srcdir)/../../../include/default.cfg
248	. $(atf_get_srcdir)/zpool_import.cfg
249
250	ksh93 $(atf_get_srcdir)/cleanup.ksh || atf_fail "Cleanup failed"
251}
252
253
254atf_test_case zpool_import_011_neg cleanup
255zpool_import_011_neg_head()
256{
257	atf_set "descr" "For strip pool, any destroyed pool devices was demaged,zpool import -D will failed."
258	atf_set "require.progs"  zpool zfs zdb
259	atf_set "timeout" 2400
260}
261zpool_import_011_neg_body()
262{
263	. $(atf_get_srcdir)/../../../include/default.cfg
264	. $(atf_get_srcdir)/zpool_import.cfg
265
266	verify_disk_count "$DISKS" 2
267	ksh93 $(atf_get_srcdir)/setup.ksh || atf_fail "Setup failed"
268	ksh93 $(atf_get_srcdir)/zpool_import_011_neg.ksh || atf_fail "Testcase failed"
269}
270zpool_import_011_neg_cleanup()
271{
272	. $(atf_get_srcdir)/../../../include/default.cfg
273	. $(atf_get_srcdir)/zpool_import.cfg
274
275	ksh93 $(atf_get_srcdir)/cleanup.ksh || atf_fail "Cleanup failed"
276}
277
278
279atf_test_case zpool_import_012_pos cleanup
280zpool_import_012_pos_head()
281{
282	atf_set "descr" "Verify all mount & share status of sub-filesystems within a poolcan be restored after import [-Df]."
283	atf_set "require.progs"  zfs zpool zdb share
284	atf_set "timeout" 2400
285}
286zpool_import_012_pos_body()
287{
288	. $(atf_get_srcdir)/../../../include/default.cfg
289	. $(atf_get_srcdir)/zpool_import.cfg
290
291	verify_disk_count "$DISKS" 2
292	ksh93 $(atf_get_srcdir)/setup.ksh || atf_fail "Setup failed"
293	ksh93 $(atf_get_srcdir)/zpool_import_012_pos.ksh || atf_fail "Testcase failed"
294}
295zpool_import_012_pos_cleanup()
296{
297	. $(atf_get_srcdir)/../../../include/default.cfg
298	. $(atf_get_srcdir)/zpool_import.cfg
299
300	ksh93 $(atf_get_srcdir)/cleanup.ksh || atf_fail "Cleanup failed"
301}
302
303
304atf_test_case zpool_import_013_neg
305zpool_import_013_neg_head()
306{
307	atf_set "descr" "'zpool import' fails for pool that was not cleanly exported"
308	atf_set "require.progs"  zfs zpool
309}
310zpool_import_013_neg_body()
311{
312	. $(atf_get_srcdir)/../../../include/default.cfg
313	. $(atf_get_srcdir)/zpool_import.cfg
314
315	ksh93 $(atf_get_srcdir)/zpool_import_013_neg.ksh || atf_fail "Testcase failed"
316}
317
318
319atf_test_case zpool_import_014_pos cleanup
320zpool_import_014_pos_head()
321{
322	atf_set "descr" "'zpool import' can import destroyed disk-backed pools"
323	atf_set "require.progs"  zfs zpool
324}
325zpool_import_014_pos_body()
326{
327	. $(atf_get_srcdir)/../../../include/default.cfg
328	. $(atf_get_srcdir)/zpool_import.cfg
329
330	verify_disk_count "$DISKS" 1
331	ksh93 $(atf_get_srcdir)/zpool_import_014_pos.ksh || atf_fail "Testcase failed"
332}
333zpool_import_014_pos_cleanup()
334{
335	. $(atf_get_srcdir)/../../../include/default.cfg
336	. $(atf_get_srcdir)/zpool_import.cfg
337
338	ksh93 $(atf_get_srcdir)/cleanup.ksh || atf_fail "Cleanup failed"
339}
340
341
342atf_test_case zpool_import_all_001_pos cleanup
343zpool_import_all_001_pos_head()
344{
345	atf_set "descr" "Verify that 'zpool import -a' succeeds as root."
346	atf_set "require.progs"  zfs zpool sum
347	atf_set "timeout" 2400
348}
349zpool_import_all_001_pos_body()
350{
351	atf_skip "This test relies heavily on Solaris slices.  It could be ported, but that is difficult due to the high degree of obfuscation in the code"
352	. $(atf_get_srcdir)/../../../include/default.cfg
353	. $(atf_get_srcdir)/zpool_import.cfg
354
355	verify_disk_count "$DISKS" 2
356	ksh93 $(atf_get_srcdir)/setup.ksh || atf_fail "Setup failed"
357	ksh93 $(atf_get_srcdir)/zpool_import_all_001_pos.ksh || atf_fail "Testcase failed"
358}
359zpool_import_all_001_pos_cleanup()
360{
361	. $(atf_get_srcdir)/../../../include/default.cfg
362	. $(atf_get_srcdir)/zpool_import.cfg
363
364	ksh93 $(atf_get_srcdir)/cleanup.ksh || atf_fail "Cleanup failed"
365}
366
367
368atf_test_case zpool_import_missing_001_pos cleanup
369zpool_import_missing_001_pos_head()
370{
371	atf_set "descr" "Verify that import could handle damaged or missing device."
372	atf_set "require.progs"  zfs sum zpool zdb
373	atf_set "timeout" 2400
374}
375zpool_import_missing_001_pos_body()
376{
377	. $(atf_get_srcdir)/../../../include/default.cfg
378	. $(atf_get_srcdir)/zpool_import.cfg
379
380	verify_disk_count "$DISKS" 2
381	ksh93 $(atf_get_srcdir)/setup.ksh || atf_fail "Setup failed"
382	ksh93 $(atf_get_srcdir)/zpool_import_missing_001_pos.ksh || atf_fail "Testcase failed"
383}
384zpool_import_missing_001_pos_cleanup()
385{
386	. $(atf_get_srcdir)/../../../include/default.cfg
387	. $(atf_get_srcdir)/zpool_import.cfg
388
389	ksh93 $(atf_get_srcdir)/cleanup.ksh || atf_fail "Cleanup failed"
390}
391
392
393atf_test_case zpool_import_missing_002_pos cleanup
394zpool_import_missing_002_pos_head()
395{
396	atf_set "descr" "Verify that import could handle moving device."
397	atf_set "require.progs"  zpool zfs zdb
398	atf_set "timeout" 2400
399}
400zpool_import_missing_002_pos_body()
401{
402	. $(atf_get_srcdir)/../../../include/default.cfg
403	. $(atf_get_srcdir)/zpool_import.cfg
404
405	verify_disk_count "$DISKS" 2
406	ksh93 $(atf_get_srcdir)/setup.ksh || atf_fail "Setup failed"
407	ksh93 $(atf_get_srcdir)/zpool_import_missing_002_pos.ksh || atf_fail "Testcase failed"
408}
409zpool_import_missing_002_pos_cleanup()
410{
411	. $(atf_get_srcdir)/../../../include/default.cfg
412	. $(atf_get_srcdir)/zpool_import.cfg
413
414	ksh93 $(atf_get_srcdir)/cleanup.ksh || atf_fail "Cleanup failed"
415}
416
417
418atf_test_case zpool_import_missing_003_pos cleanup
419zpool_import_missing_003_pos_head()
420{
421	atf_set "descr" "Verify that import could handle device overlapped."
422	atf_set "require.progs"  zpool sum zfs
423	atf_set "timeout" 2400
424}
425zpool_import_missing_003_pos_body()
426{
427	. $(atf_get_srcdir)/../../../include/default.cfg
428	. $(atf_get_srcdir)/zpool_import.cfg
429
430	verify_disk_count "$DISKS" 2
431	ksh93 $(atf_get_srcdir)/setup.ksh || atf_fail "Setup failed"
432	ksh93 $(atf_get_srcdir)/zpool_import_missing_003_pos.ksh || atf_fail "Testcase failed"
433}
434zpool_import_missing_003_pos_cleanup()
435{
436	. $(atf_get_srcdir)/../../../include/default.cfg
437	. $(atf_get_srcdir)/zpool_import.cfg
438
439	ksh93 $(atf_get_srcdir)/cleanup.ksh || atf_fail "Cleanup failed"
440}
441
442atf_test_case zpool_import_missing_004_pos
443zpool_import_missing_004_pos_head()
444{
445	atf_set "descr" "Verify that zpool import succeeds when devices are missing"
446	atf_set "require.progs"  zfs zpool
447	atf_set "timeout" 300
448}
449zpool_import_missing_004_pos_body()
450{
451	. $(atf_get_srcdir)/../../../include/default.cfg
452	. $(atf_get_srcdir)/zpool_import.cfg
453
454	ksh93 $(atf_get_srcdir)/zpool_import_missing_004_pos.ksh || atf_fail "Testcase failed"
455}
456
457atf_test_case zpool_import_missing_005_pos
458zpool_import_missing_005_pos_head()
459{
460	atf_set "descr" "Verify that zpool import succeeds when devices of all types have been renamed"
461	atf_set "require.progs"  mdconfig zfs zpool
462	atf_set "timeout" 300
463}
464zpool_import_missing_005_pos_body()
465{
466	. $(atf_get_srcdir)/../../../include/default.cfg
467	. $(atf_get_srcdir)/zpool_import.cfg
468
469	ksh93 $(atf_get_srcdir)/zpool_import_missing_005_pos.ksh || atf_fail "Testcase failed"
470}
471
472
473atf_test_case zpool_import_rename_001_pos cleanup
474zpool_import_rename_001_pos_head()
475{
476	atf_set "descr" "Verify that an imported pool can be renamed."
477	atf_set "require.progs"  zfs zpool sum zdb
478	atf_set "timeout" 2400
479}
480zpool_import_rename_001_pos_body()
481{
482	. $(atf_get_srcdir)/../../../include/default.cfg
483	. $(atf_get_srcdir)/zpool_import.cfg
484
485	verify_disk_count "$DISKS" 2
486	ksh93 $(atf_get_srcdir)/setup.ksh || atf_fail "Setup failed"
487	ksh93 $(atf_get_srcdir)/zpool_import_rename_001_pos.ksh || atf_fail "Testcase failed"
488}
489zpool_import_rename_001_pos_cleanup()
490{
491	. $(atf_get_srcdir)/../../../include/default.cfg
492	. $(atf_get_srcdir)/zpool_import.cfg
493
494	ksh93 $(atf_get_srcdir)/cleanup.ksh || atf_fail "Cleanup failed"
495}
496
497atf_test_case zpool_import_corrupt_001_pos cleanup
498zpool_import_corrupt_001_pos_head()
499{
500	atf_set "descr" "Verify that a disk-backed exported pool with some of its vdev labels corrupted can still be imported"
501	atf_set "require.progs"  zfs zpool zdb
502	atf_set "timeout" 2400
503}
504zpool_import_corrupt_001_pos_body()
505{
506	. $(atf_get_srcdir)/../../../include/default.cfg
507	. $(atf_get_srcdir)/zpool_import.cfg
508
509	verify_disk_count "$DISKS" 1
510	ksh93 $(atf_get_srcdir)/zpool_import_corrupt_001_pos.ksh || atf_fail "Testcase failed"
511}
512zpool_import_corrupt_001_pos_cleanup()
513{
514	. $(atf_get_srcdir)/../../../include/default.cfg
515	. $(atf_get_srcdir)/zpool_import.cfg
516
517	ksh93 $(atf_get_srcdir)/cleanup.ksh || atf_fail "Cleanup failed"
518}
519
520atf_test_case zpool_import_destroyed_001_neg cleanup
521zpool_import_destroyed_001_neg_head()
522{
523	atf_set "descr" "'zpool import' will not show destroyed pools, even if an out-of-date non-destroyed label remains"
524	atf_set "require.progs"  zpool
525}
526zpool_import_destroyed_001_neg_body()
527{
528	. $(atf_get_srcdir)/../../../include/default.cfg
529
530	verify_disk_count "$DISKS" 3
531	ksh93 $(atf_get_srcdir)/zpool_import_destroyed_001_neg.ksh || atf_fail "Testcase failed"
532}
533zpool_import_destroyed_001_neg_cleanup()
534{
535	. $(atf_get_srcdir)/../../../include/default.cfg
536
537	destroy_pool "$TESTPOOL"
538	cleanup_devices "$DISKS"
539}
540
541atf_test_case zpool_import_destroyed_002_neg cleanup
542zpool_import_destroyed_002_neg_head()
543{
544	atf_set "descr" "'zpool import' will not show destroyed pools, even if an out-of-date non-destroyed label remains"
545	atf_set "require.progs"  zpool
546}
547zpool_import_destroyed_002_neg_body()
548{
549	. $(atf_get_srcdir)/../../../include/default.cfg
550
551	verify_disk_count "$DISKS" 2
552	ksh93 $(atf_get_srcdir)/zpool_import_destroyed_002_neg.ksh || atf_fail "Testcase failed"
553}
554zpool_import_destroyed_002_neg_cleanup()
555{
556	. $(atf_get_srcdir)/../../../include/default.cfg
557
558	destroy_pool "$TESTPOOL"
559	cleanup_devices "$DISKS"
560}
561
562
563atf_init_test_cases()
564{
565
566	atf_add_test_case zpool_import_002_pos
567	atf_add_test_case zpool_import_003_pos
568	atf_add_test_case zpool_import_004_pos
569	atf_add_test_case zpool_import_005_pos
570	atf_add_test_case zpool_import_006_pos
571	atf_add_test_case zpool_import_007_pos
572	atf_add_test_case zpool_import_008_pos
573	atf_add_test_case zpool_import_009_neg
574	atf_add_test_case zpool_import_010_pos
575	atf_add_test_case zpool_import_011_neg
576	atf_add_test_case zpool_import_012_pos
577	atf_add_test_case zpool_import_013_neg
578	atf_add_test_case zpool_import_014_pos
579	atf_add_test_case zpool_import_all_001_pos
580	atf_add_test_case zpool_import_missing_001_pos
581	atf_add_test_case zpool_import_missing_002_pos
582	atf_add_test_case zpool_import_missing_003_pos
583	atf_add_test_case zpool_import_missing_004_pos
584	atf_add_test_case zpool_import_missing_005_pos
585	atf_add_test_case zpool_import_rename_001_pos
586	atf_add_test_case zpool_import_corrupt_001_pos
587	atf_add_test_case zpool_import_destroyed_001_neg
588	atf_add_test_case zpool_import_destroyed_002_neg
589}
590