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