xref: /freebsd/tests/sys/cddl/zfs/tests/hotspare/hotspare_test.sh (revision d0b2dbfa0ecf2bbc9709efc5e20baf8e4b44bbbf)
12fae26bdSAlan Somers# CDDL HEADER START
22fae26bdSAlan Somers#
32fae26bdSAlan Somers# The contents of this file are subject to the terms of the
42fae26bdSAlan Somers# Common Development and Distribution License (the "License").
52fae26bdSAlan Somers# You may not use this file except in compliance with the License.
62fae26bdSAlan Somers#
72fae26bdSAlan Somers# You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE
82fae26bdSAlan Somers# or http://www.opensolaris.org/os/licensing.
92fae26bdSAlan Somers# See the License for the specific language governing permissions
102fae26bdSAlan Somers# and limitations under the License.
112fae26bdSAlan Somers#
122fae26bdSAlan Somers# When distributing Covered Code, include this CDDL HEADER in each
132fae26bdSAlan Somers# file and include the License file at usr/src/OPENSOLARIS.LICENSE.
142fae26bdSAlan Somers# If applicable, add the following below this CDDL HEADER, with the
152fae26bdSAlan Somers# fields enclosed by brackets "[]" replaced with your own identifying
162fae26bdSAlan Somers# information: Portions Copyright [yyyy] [name of copyright owner]
172fae26bdSAlan Somers#
182fae26bdSAlan Somers# CDDL HEADER END
192fae26bdSAlan Somers#
202fae26bdSAlan Somers
212fae26bdSAlan Somers#
222fae26bdSAlan Somers# Copyright 2012 Spectra Logic.  All rights reserved.
232fae26bdSAlan Somers# Use is subject to license terms.
242fae26bdSAlan Somers#
252fae26bdSAlan Somers
262fae26bdSAlan Somers
272fae26bdSAlan Somersatf_test_case hotspare_add_001_pos cleanup
282fae26bdSAlan Somershotspare_add_001_pos_head()
292fae26bdSAlan Somers{
302fae26bdSAlan Somers	atf_set "descr" "'zpool add <pool> spare <vdev> ...' can add devices to the pool."
312fae26bdSAlan Somers	atf_set "timeout" 3600
322fae26bdSAlan Somers}
332fae26bdSAlan Somershotspare_add_001_pos_body()
342fae26bdSAlan Somers{
352fae26bdSAlan Somers	. $(atf_get_srcdir)/../../include/default.cfg
362fae26bdSAlan Somers	. $(atf_get_srcdir)/hotspare.kshlib
372fae26bdSAlan Somers	. $(atf_get_srcdir)/hotspare.cfg
382fae26bdSAlan Somers
392fae26bdSAlan Somers	ksh93 $(atf_get_srcdir)/setup.ksh || atf_fail "Setup failed"
402fae26bdSAlan Somers	ksh93 $(atf_get_srcdir)/hotspare_add_001_pos.ksh || atf_fail "Testcase failed"
412fae26bdSAlan Somers}
422fae26bdSAlan Somershotspare_add_001_pos_cleanup()
432fae26bdSAlan Somers{
442fae26bdSAlan Somers	. $(atf_get_srcdir)/../../include/default.cfg
452fae26bdSAlan Somers	. $(atf_get_srcdir)/hotspare.kshlib
462fae26bdSAlan Somers	. $(atf_get_srcdir)/hotspare.cfg
472fae26bdSAlan Somers
482fae26bdSAlan Somers	ksh93 $(atf_get_srcdir)/cleanup.ksh || atf_fail "Cleanup failed"
492fae26bdSAlan Somers}
502fae26bdSAlan Somers
512fae26bdSAlan Somers
522fae26bdSAlan Somersatf_test_case hotspare_add_002_pos cleanup
532fae26bdSAlan Somershotspare_add_002_pos_head()
542fae26bdSAlan Somers{
552fae26bdSAlan Somers	atf_set "descr" "'zpool add <pool> spare <vdev> ...' can add devices to the pool while it has spare-in device."
560b86424cSAlex Richardson	atf_set "require.progs" "ksh93 zpool"
572fae26bdSAlan Somers	atf_set "timeout" 3600
582fae26bdSAlan Somers}
592fae26bdSAlan Somershotspare_add_002_pos_body()
602fae26bdSAlan Somers{
612fae26bdSAlan Somers	. $(atf_get_srcdir)/../../include/default.cfg
622fae26bdSAlan Somers	. $(atf_get_srcdir)/hotspare.kshlib
632fae26bdSAlan Somers	. $(atf_get_srcdir)/hotspare.cfg
642fae26bdSAlan Somers
652fae26bdSAlan Somers	ksh93 $(atf_get_srcdir)/setup.ksh || atf_fail "Setup failed"
662fae26bdSAlan Somers	ksh93 $(atf_get_srcdir)/hotspare_add_002_pos.ksh || atf_fail "Testcase failed"
672fae26bdSAlan Somers}
682fae26bdSAlan Somershotspare_add_002_pos_cleanup()
692fae26bdSAlan Somers{
702fae26bdSAlan Somers	. $(atf_get_srcdir)/../../include/default.cfg
712fae26bdSAlan Somers	. $(atf_get_srcdir)/hotspare.kshlib
722fae26bdSAlan Somers	. $(atf_get_srcdir)/hotspare.cfg
732fae26bdSAlan Somers
742fae26bdSAlan Somers	ksh93 $(atf_get_srcdir)/cleanup.ksh || atf_fail "Cleanup failed"
752fae26bdSAlan Somers}
762fae26bdSAlan Somers
772fae26bdSAlan Somers
782fae26bdSAlan Somersatf_test_case hotspare_add_003_neg cleanup
792fae26bdSAlan Somershotspare_add_003_neg_head()
802fae26bdSAlan Somers{
812fae26bdSAlan Somers	atf_set "descr" "'zpool add [-f]' with hot spares should fail with inapplicable scenarios."
820b86424cSAlex Richardson	atf_set "require.progs" "ksh93 zpool"
832fae26bdSAlan Somers	atf_set "timeout" 3600
842fae26bdSAlan Somers}
852fae26bdSAlan Somershotspare_add_003_neg_body()
862fae26bdSAlan Somers{
872fae26bdSAlan Somers	. $(atf_get_srcdir)/../../include/default.cfg
882fae26bdSAlan Somers	. $(atf_get_srcdir)/hotspare.kshlib
892fae26bdSAlan Somers	. $(atf_get_srcdir)/hotspare.cfg
902fae26bdSAlan Somers
91*11ed0a95SEric van Gyzen	verify_disk_count "$DISKS" 3
922fae26bdSAlan Somers	ksh93 $(atf_get_srcdir)/setup.ksh || atf_fail "Setup failed"
932fae26bdSAlan Somers	ksh93 $(atf_get_srcdir)/hotspare_add_003_neg.ksh || atf_fail "Testcase failed"
942fae26bdSAlan Somers}
952fae26bdSAlan Somershotspare_add_003_neg_cleanup()
962fae26bdSAlan Somers{
972fae26bdSAlan Somers	. $(atf_get_srcdir)/../../include/default.cfg
982fae26bdSAlan Somers	. $(atf_get_srcdir)/hotspare.kshlib
992fae26bdSAlan Somers	. $(atf_get_srcdir)/hotspare.cfg
1002fae26bdSAlan Somers
1012fae26bdSAlan Somers	ksh93 $(atf_get_srcdir)/cleanup.ksh || atf_fail "Cleanup failed"
1022fae26bdSAlan Somers}
1032fae26bdSAlan Somers
1042fae26bdSAlan Somers
1052fae26bdSAlan Somersatf_test_case hotspare_add_004_neg cleanup
1062fae26bdSAlan Somershotspare_add_004_neg_head()
1072fae26bdSAlan Somers{
1082fae26bdSAlan Somers	atf_set "descr" "'zpool add [-f]' will not allow a swap device to be used as a hotspare'"
1090b86424cSAlex Richardson	atf_set "require.progs" "ksh93 zpool swapon swapoff swapctl"
1102fae26bdSAlan Somers}
1112fae26bdSAlan Somershotspare_add_004_neg_body()
1122fae26bdSAlan Somers{
1132fae26bdSAlan Somers	. $(atf_get_srcdir)/../../include/default.cfg
1142fae26bdSAlan Somers	. $(atf_get_srcdir)/hotspare.kshlib
1152fae26bdSAlan Somers	. $(atf_get_srcdir)/hotspare.cfg
1162fae26bdSAlan Somers
1177d4670b6SAlan Somers	verify_disk_count "$DISKS" 2
1182fae26bdSAlan Somers	ksh93 $(atf_get_srcdir)/setup.ksh || atf_fail "Setup failed"
1192fae26bdSAlan Somers	ksh93 $(atf_get_srcdir)/hotspare_add_004_neg.ksh || atf_fail "Testcase failed"
1202fae26bdSAlan Somers}
1212fae26bdSAlan Somershotspare_add_004_neg_cleanup()
1222fae26bdSAlan Somers{
1232fae26bdSAlan Somers	. $(atf_get_srcdir)/../../include/default.cfg
1242fae26bdSAlan Somers	. $(atf_get_srcdir)/hotspare.kshlib
1252fae26bdSAlan Somers	. $(atf_get_srcdir)/hotspare.cfg
1262fae26bdSAlan Somers
1272fae26bdSAlan Somers	ksh93 $(atf_get_srcdir)/cleanup.ksh || atf_fail "Cleanup failed"
1282fae26bdSAlan Somers}
1292fae26bdSAlan Somers
1302fae26bdSAlan Somers
1312fae26bdSAlan Somersatf_test_case hotspare_clone_001_pos cleanup
1322fae26bdSAlan Somershotspare_clone_001_pos_head()
1332fae26bdSAlan Somers{
1342fae26bdSAlan Somers	atf_set "descr" "'zpool detach <pool> <vdev> ...' against hotspare should do no harm to clone."
1350b86424cSAlex Richardson	atf_set "require.progs" "ksh93 zfs zpool sum"
1362fae26bdSAlan Somers	atf_set "timeout" 3600
1372fae26bdSAlan Somers}
1382fae26bdSAlan Somershotspare_clone_001_pos_body()
1392fae26bdSAlan Somers{
1402fae26bdSAlan Somers	. $(atf_get_srcdir)/../../include/default.cfg
1412fae26bdSAlan Somers	. $(atf_get_srcdir)/hotspare.kshlib
1422fae26bdSAlan Somers	. $(atf_get_srcdir)/hotspare.cfg
1432fae26bdSAlan Somers
1442fae26bdSAlan Somers	ksh93 $(atf_get_srcdir)/setup.ksh || atf_fail "Setup failed"
1452fae26bdSAlan Somers	ksh93 $(atf_get_srcdir)/hotspare_clone_001_pos.ksh || atf_fail "Testcase failed"
1462fae26bdSAlan Somers}
1472fae26bdSAlan Somershotspare_clone_001_pos_cleanup()
1482fae26bdSAlan Somers{
1492fae26bdSAlan Somers	. $(atf_get_srcdir)/../../include/default.cfg
1502fae26bdSAlan Somers	. $(atf_get_srcdir)/hotspare.kshlib
1512fae26bdSAlan Somers	. $(atf_get_srcdir)/hotspare.cfg
1522fae26bdSAlan Somers
1532fae26bdSAlan Somers	ksh93 $(atf_get_srcdir)/cleanup.ksh || atf_fail "Cleanup failed"
1542fae26bdSAlan Somers}
1552fae26bdSAlan Somers
1562fae26bdSAlan Somers
1572fae26bdSAlan Somersatf_test_case hotspare_clone_002_pos cleanup
1582fae26bdSAlan Somershotspare_clone_002_pos_head()
1592fae26bdSAlan Somers{
1602fae26bdSAlan Somers	atf_set "descr" "'zpool detach <pool> <vdev> ...' against basic vdev should do no harm to clone."
1610b86424cSAlex Richardson	atf_set "require.progs" "ksh93 zfs zpool sum"
1622fae26bdSAlan Somers	atf_set "timeout" 3600
1632fae26bdSAlan Somers}
1642fae26bdSAlan Somershotspare_clone_002_pos_body()
1652fae26bdSAlan Somers{
1662fae26bdSAlan Somers	. $(atf_get_srcdir)/../../include/default.cfg
1672fae26bdSAlan Somers	. $(atf_get_srcdir)/hotspare.kshlib
1682fae26bdSAlan Somers	. $(atf_get_srcdir)/hotspare.cfg
1692fae26bdSAlan Somers
1702fae26bdSAlan Somers	ksh93 $(atf_get_srcdir)/setup.ksh || atf_fail "Setup failed"
1712fae26bdSAlan Somers	ksh93 $(atf_get_srcdir)/hotspare_clone_002_pos.ksh || atf_fail "Testcase failed"
1722fae26bdSAlan Somers}
1732fae26bdSAlan Somershotspare_clone_002_pos_cleanup()
1742fae26bdSAlan Somers{
1752fae26bdSAlan Somers	. $(atf_get_srcdir)/../../include/default.cfg
1762fae26bdSAlan Somers	. $(atf_get_srcdir)/hotspare.kshlib
1772fae26bdSAlan Somers	. $(atf_get_srcdir)/hotspare.cfg
1782fae26bdSAlan Somers
1792fae26bdSAlan Somers	ksh93 $(atf_get_srcdir)/cleanup.ksh || atf_fail "Cleanup failed"
1802fae26bdSAlan Somers}
1812fae26bdSAlan Somers
1822fae26bdSAlan Somers
1832fae26bdSAlan Somersatf_test_case hotspare_create_001_neg cleanup
1842fae26bdSAlan Somershotspare_create_001_neg_head()
1852fae26bdSAlan Somers{
1862fae26bdSAlan Somers	atf_set "descr" "'zpool create [-f]' with hot spares should be failedwith inapplicable scenarios."
187*11ed0a95SEric van Gyzen	atf_set "require.progs" "ksh93 zpool"
1882fae26bdSAlan Somers	atf_set "timeout" 3600
1892fae26bdSAlan Somers}
1902fae26bdSAlan Somershotspare_create_001_neg_body()
1912fae26bdSAlan Somers{
1922fae26bdSAlan Somers	. $(atf_get_srcdir)/../../include/default.cfg
1932fae26bdSAlan Somers	. $(atf_get_srcdir)/hotspare.kshlib
1942fae26bdSAlan Somers	. $(atf_get_srcdir)/hotspare.cfg
1952fae26bdSAlan Somers
196*11ed0a95SEric van Gyzen	verify_disk_count "$DISKS" 3
1972fae26bdSAlan Somers	ksh93 $(atf_get_srcdir)/setup.ksh || atf_fail "Setup failed"
1982fae26bdSAlan Somers	ksh93 $(atf_get_srcdir)/hotspare_create_001_neg.ksh || atf_fail "Testcase failed"
1992fae26bdSAlan Somers}
2002fae26bdSAlan Somershotspare_create_001_neg_cleanup()
2012fae26bdSAlan Somers{
2022fae26bdSAlan Somers	. $(atf_get_srcdir)/../../include/default.cfg
2032fae26bdSAlan Somers	. $(atf_get_srcdir)/hotspare.kshlib
2042fae26bdSAlan Somers	. $(atf_get_srcdir)/hotspare.cfg
2052fae26bdSAlan Somers
2062fae26bdSAlan Somers	ksh93 $(atf_get_srcdir)/cleanup.ksh || atf_fail "Cleanup failed"
2072fae26bdSAlan Somers}
2082fae26bdSAlan Somers
2092fae26bdSAlan Somers
2102fae26bdSAlan Somersatf_test_case hotspare_detach_001_pos cleanup
2112fae26bdSAlan Somershotspare_detach_001_pos_head()
2122fae26bdSAlan Somers{
2132fae26bdSAlan Somers	atf_set "descr" "'zpool detach <pool> <vdev> ...' should deactivate the spared-in hot spare device successfully."
2140b86424cSAlex Richardson	atf_set "require.progs" "ksh93 zpool"
2152fae26bdSAlan Somers	atf_set "timeout" 3600
2162fae26bdSAlan Somers}
2172fae26bdSAlan Somershotspare_detach_001_pos_body()
2182fae26bdSAlan Somers{
2192fae26bdSAlan Somers	. $(atf_get_srcdir)/../../include/default.cfg
2202fae26bdSAlan Somers	. $(atf_get_srcdir)/hotspare.kshlib
2212fae26bdSAlan Somers	. $(atf_get_srcdir)/hotspare.cfg
2222fae26bdSAlan Somers
2232fae26bdSAlan Somers	ksh93 $(atf_get_srcdir)/setup.ksh || atf_fail "Setup failed"
2242fae26bdSAlan Somers	ksh93 $(atf_get_srcdir)/hotspare_detach_001_pos.ksh || atf_fail "Testcase failed"
2252fae26bdSAlan Somers}
2262fae26bdSAlan Somershotspare_detach_001_pos_cleanup()
2272fae26bdSAlan Somers{
2282fae26bdSAlan Somers	. $(atf_get_srcdir)/../../include/default.cfg
2292fae26bdSAlan Somers	. $(atf_get_srcdir)/hotspare.kshlib
2302fae26bdSAlan Somers	. $(atf_get_srcdir)/hotspare.cfg
2312fae26bdSAlan Somers
2322fae26bdSAlan Somers	ksh93 $(atf_get_srcdir)/cleanup.ksh || atf_fail "Cleanup failed"
2332fae26bdSAlan Somers}
2342fae26bdSAlan Somers
2352fae26bdSAlan Somers
2362fae26bdSAlan Somersatf_test_case hotspare_detach_002_pos cleanup
2372fae26bdSAlan Somershotspare_detach_002_pos_head()
2382fae26bdSAlan Somers{
2392fae26bdSAlan Somers	atf_set "descr" "'zpool detach <pool> <vdev> ...' against a functioning device that have spared should take the hot spare permanently swapping in successfully."
2400b86424cSAlex Richardson	atf_set "require.progs" "ksh93 zpool"
2412fae26bdSAlan Somers	atf_set "timeout" 3600
2422fae26bdSAlan Somers}
2432fae26bdSAlan Somershotspare_detach_002_pos_body()
2442fae26bdSAlan Somers{
2452fae26bdSAlan Somers	. $(atf_get_srcdir)/../../include/default.cfg
2462fae26bdSAlan Somers	. $(atf_get_srcdir)/hotspare.kshlib
2472fae26bdSAlan Somers	. $(atf_get_srcdir)/hotspare.cfg
2482fae26bdSAlan Somers
2492fae26bdSAlan Somers	ksh93 $(atf_get_srcdir)/setup.ksh || atf_fail "Setup failed"
2502fae26bdSAlan Somers	ksh93 $(atf_get_srcdir)/hotspare_detach_002_pos.ksh || atf_fail "Testcase failed"
2512fae26bdSAlan Somers}
2522fae26bdSAlan Somershotspare_detach_002_pos_cleanup()
2532fae26bdSAlan Somers{
2542fae26bdSAlan Somers	. $(atf_get_srcdir)/../../include/default.cfg
2552fae26bdSAlan Somers	. $(atf_get_srcdir)/hotspare.kshlib
2562fae26bdSAlan Somers	. $(atf_get_srcdir)/hotspare.cfg
2572fae26bdSAlan Somers
2582fae26bdSAlan Somers	ksh93 $(atf_get_srcdir)/cleanup.ksh || atf_fail "Cleanup failed"
2592fae26bdSAlan Somers}
2602fae26bdSAlan Somers
2612fae26bdSAlan Somers
2622fae26bdSAlan Somersatf_test_case hotspare_detach_003_pos cleanup
2632fae26bdSAlan Somershotspare_detach_003_pos_head()
2642fae26bdSAlan Somers{
2652fae26bdSAlan Somers	atf_set "descr" "'zpool replace <pool> <vdev> <ndev>' against a functioning device that have spared should complete and the hot spare should return to available."
2660b86424cSAlex Richardson	atf_set "require.progs" "ksh93 zpool"
2672fae26bdSAlan Somers	atf_set "timeout" 3600
2682fae26bdSAlan Somers}
2692fae26bdSAlan Somershotspare_detach_003_pos_body()
2702fae26bdSAlan Somers{
2712fae26bdSAlan Somers	. $(atf_get_srcdir)/../../include/default.cfg
2722fae26bdSAlan Somers	. $(atf_get_srcdir)/hotspare.kshlib
2732fae26bdSAlan Somers	. $(atf_get_srcdir)/hotspare.cfg
2742fae26bdSAlan Somers
2752fae26bdSAlan Somers	ksh93 $(atf_get_srcdir)/setup.ksh || atf_fail "Setup failed"
2762fae26bdSAlan Somers	ksh93 $(atf_get_srcdir)/hotspare_detach_003_pos.ksh || atf_fail "Testcase failed"
2772fae26bdSAlan Somers}
2782fae26bdSAlan Somershotspare_detach_003_pos_cleanup()
2792fae26bdSAlan Somers{
2802fae26bdSAlan Somers	. $(atf_get_srcdir)/../../include/default.cfg
2812fae26bdSAlan Somers	. $(atf_get_srcdir)/hotspare.kshlib
2822fae26bdSAlan Somers	. $(atf_get_srcdir)/hotspare.cfg
2832fae26bdSAlan Somers
2842fae26bdSAlan Somers	ksh93 $(atf_get_srcdir)/cleanup.ksh || atf_fail "Cleanup failed"
2852fae26bdSAlan Somers}
2862fae26bdSAlan Somers
2872fae26bdSAlan Somers
2882fae26bdSAlan Somersatf_test_case hotspare_detach_004_pos cleanup
2892fae26bdSAlan Somershotspare_detach_004_pos_head()
2902fae26bdSAlan Somers{
2912fae26bdSAlan Somers	atf_set "descr" "'zpool replace <pool> <vdev> <ndev>' against a hot spare device that have been activated should successful while the another dev is a available hot spare."
2920b86424cSAlex Richardson	atf_set "require.progs" "ksh93 zpool"
2932fae26bdSAlan Somers	atf_set "timeout" 3600
2942fae26bdSAlan Somers}
2952fae26bdSAlan Somershotspare_detach_004_pos_body()
2962fae26bdSAlan Somers{
2972fae26bdSAlan Somers	. $(atf_get_srcdir)/../../include/default.cfg
2982fae26bdSAlan Somers	. $(atf_get_srcdir)/hotspare.kshlib
2992fae26bdSAlan Somers	. $(atf_get_srcdir)/hotspare.cfg
3002fae26bdSAlan Somers
3012fae26bdSAlan Somers	ksh93 $(atf_get_srcdir)/setup.ksh || atf_fail "Setup failed"
3022fae26bdSAlan Somers	ksh93 $(atf_get_srcdir)/hotspare_detach_004_pos.ksh || atf_fail "Testcase failed"
3032fae26bdSAlan Somers}
3042fae26bdSAlan Somershotspare_detach_004_pos_cleanup()
3052fae26bdSAlan Somers{
3062fae26bdSAlan Somers	. $(atf_get_srcdir)/../../include/default.cfg
3072fae26bdSAlan Somers	. $(atf_get_srcdir)/hotspare.kshlib
3082fae26bdSAlan Somers	. $(atf_get_srcdir)/hotspare.cfg
3092fae26bdSAlan Somers
3102fae26bdSAlan Somers	ksh93 $(atf_get_srcdir)/cleanup.ksh || atf_fail "Cleanup failed"
3112fae26bdSAlan Somers}
3122fae26bdSAlan Somers
3132fae26bdSAlan Somers
3142fae26bdSAlan Somersatf_test_case hotspare_detach_005_neg cleanup
3152fae26bdSAlan Somershotspare_detach_005_neg_head()
3162fae26bdSAlan Somers{
3172fae26bdSAlan Somers	atf_set "descr" "'zpool detach <pool> <vdev>' against a hot spare device that NOT activated should fail and issue an error message."
3180b86424cSAlex Richardson	atf_set "require.progs" "ksh93 zpool"
3192fae26bdSAlan Somers	atf_set "timeout" 3600
3202fae26bdSAlan Somers}
3212fae26bdSAlan Somershotspare_detach_005_neg_body()
3222fae26bdSAlan Somers{
3232fae26bdSAlan Somers	. $(atf_get_srcdir)/../../include/default.cfg
3242fae26bdSAlan Somers	. $(atf_get_srcdir)/hotspare.kshlib
3252fae26bdSAlan Somers	. $(atf_get_srcdir)/hotspare.cfg
3262fae26bdSAlan Somers
3272fae26bdSAlan Somers	ksh93 $(atf_get_srcdir)/setup.ksh || atf_fail "Setup failed"
3282fae26bdSAlan Somers	ksh93 $(atf_get_srcdir)/hotspare_detach_005_neg.ksh || atf_fail "Testcase failed"
3292fae26bdSAlan Somers}
3302fae26bdSAlan Somershotspare_detach_005_neg_cleanup()
3312fae26bdSAlan Somers{
3322fae26bdSAlan Somers	. $(atf_get_srcdir)/../../include/default.cfg
3332fae26bdSAlan Somers	. $(atf_get_srcdir)/hotspare.kshlib
3342fae26bdSAlan Somers	. $(atf_get_srcdir)/hotspare.cfg
3352fae26bdSAlan Somers
3362fae26bdSAlan Somers	ksh93 $(atf_get_srcdir)/cleanup.ksh || atf_fail "Cleanup failed"
3372fae26bdSAlan Somers}
3382fae26bdSAlan Somers
3392fae26bdSAlan Somers
3402fae26bdSAlan Somersatf_test_case hotspare_export_001_neg cleanup
3412fae26bdSAlan Somershotspare_export_001_neg_head()
3422fae26bdSAlan Somers{
3432fae26bdSAlan Somers	atf_set "descr" "export pool that using shared hotspares will fail"
3440b86424cSAlex Richardson	atf_set "require.progs" "ksh93 zpool"
3452fae26bdSAlan Somers	atf_set "timeout" 3600
3462fae26bdSAlan Somers}
3472fae26bdSAlan Somershotspare_export_001_neg_body()
3482fae26bdSAlan Somers{
3492fae26bdSAlan Somers	. $(atf_get_srcdir)/../../include/default.cfg
3502fae26bdSAlan Somers	. $(atf_get_srcdir)/hotspare.kshlib
3512fae26bdSAlan Somers	. $(atf_get_srcdir)/hotspare.cfg
3522fae26bdSAlan Somers
3532fae26bdSAlan Somers	ksh93 $(atf_get_srcdir)/setup.ksh || atf_fail "Setup failed"
3542fae26bdSAlan Somers	ksh93 $(atf_get_srcdir)/hotspare_export_001_neg.ksh || atf_fail "Testcase failed"
3552fae26bdSAlan Somers}
3562fae26bdSAlan Somershotspare_export_001_neg_cleanup()
3572fae26bdSAlan Somers{
3582fae26bdSAlan Somers	. $(atf_get_srcdir)/../../include/default.cfg
3592fae26bdSAlan Somers	. $(atf_get_srcdir)/hotspare.kshlib
3602fae26bdSAlan Somers	. $(atf_get_srcdir)/hotspare.cfg
3612fae26bdSAlan Somers
3622fae26bdSAlan Somers	ksh93 $(atf_get_srcdir)/cleanup.ksh || atf_fail "Cleanup failed"
3632fae26bdSAlan Somers}
3642fae26bdSAlan Somers
3652fae26bdSAlan Somers
3662fae26bdSAlan Somersatf_test_case hotspare_import_001_pos cleanup
3672fae26bdSAlan Somershotspare_import_001_pos_head()
3682fae26bdSAlan Somers{
3692fae26bdSAlan Somers	atf_set "descr" "'zpool export/import <pool>' should runs successfully regardless the hotspare is only in list, activated, or offline."
3700b86424cSAlex Richardson	atf_set "require.progs" "ksh93 zpool sum"
3712fae26bdSAlan Somers	atf_set "timeout" 3600
3722fae26bdSAlan Somers}
3732fae26bdSAlan Somershotspare_import_001_pos_body()
3742fae26bdSAlan Somers{
3752fae26bdSAlan Somers	. $(atf_get_srcdir)/../../include/default.cfg
3762fae26bdSAlan Somers	. $(atf_get_srcdir)/hotspare.kshlib
3772fae26bdSAlan Somers	. $(atf_get_srcdir)/hotspare.cfg
3782fae26bdSAlan Somers
3792fae26bdSAlan Somers	ksh93 $(atf_get_srcdir)/setup.ksh || atf_fail "Setup failed"
3802fae26bdSAlan Somers	ksh93 $(atf_get_srcdir)/hotspare_import_001_pos.ksh || atf_fail "Testcase failed"
3812fae26bdSAlan Somers}
3822fae26bdSAlan Somershotspare_import_001_pos_cleanup()
3832fae26bdSAlan Somers{
3842fae26bdSAlan Somers	. $(atf_get_srcdir)/../../include/default.cfg
3852fae26bdSAlan Somers	. $(atf_get_srcdir)/hotspare.kshlib
3862fae26bdSAlan Somers	. $(atf_get_srcdir)/hotspare.cfg
3872fae26bdSAlan Somers
3882fae26bdSAlan Somers	ksh93 $(atf_get_srcdir)/cleanup.ksh || atf_fail "Cleanup failed"
3892fae26bdSAlan Somers}
3902fae26bdSAlan Somers
3912fae26bdSAlan Somers
3922fae26bdSAlan Somersatf_test_case hotspare_onoffline_003_neg cleanup
3932fae26bdSAlan Somershotspare_onoffline_003_neg_head()
3942fae26bdSAlan Somers{
3952fae26bdSAlan Somers	atf_set "descr" "'zpool offline/online <pool> <vdev>' should fail on inactive spares"
3960b86424cSAlex Richardson	atf_set "require.progs" "ksh93 zpool zdb"
3972fae26bdSAlan Somers	atf_set "timeout" 3600
3982fae26bdSAlan Somers}
3992fae26bdSAlan Somershotspare_onoffline_003_neg_body()
4002fae26bdSAlan Somers{
4012fae26bdSAlan Somers	. $(atf_get_srcdir)/../../include/default.cfg
4022fae26bdSAlan Somers	. $(atf_get_srcdir)/hotspare.kshlib
4032fae26bdSAlan Somers	. $(atf_get_srcdir)/hotspare.cfg
4042fae26bdSAlan Somers
4052fae26bdSAlan Somers	ksh93 $(atf_get_srcdir)/setup.ksh || atf_fail "Setup failed"
4062fae26bdSAlan Somers	ksh93 $(atf_get_srcdir)/hotspare_onoffline_003_neg.ksh || atf_fail "Testcase failed"
4072fae26bdSAlan Somers}
4082fae26bdSAlan Somershotspare_onoffline_003_neg_cleanup()
4092fae26bdSAlan Somers{
4102fae26bdSAlan Somers	. $(atf_get_srcdir)/../../include/default.cfg
4112fae26bdSAlan Somers	. $(atf_get_srcdir)/hotspare.kshlib
4122fae26bdSAlan Somers	. $(atf_get_srcdir)/hotspare.cfg
4132fae26bdSAlan Somers
4142fae26bdSAlan Somers	ksh93 $(atf_get_srcdir)/cleanup.ksh || atf_fail "Cleanup failed"
4152fae26bdSAlan Somers}
4162fae26bdSAlan Somers
4172fae26bdSAlan Somers
4182fae26bdSAlan Somersatf_test_case hotspare_onoffline_004_neg cleanup
4192fae26bdSAlan Somershotspare_onoffline_004_neg_head()
4202fae26bdSAlan Somers{
4212fae26bdSAlan Somers	atf_set "descr" "'zpool offline/online <pool> <vdev>' against a spared basic vdev during I/O completes."
4220b86424cSAlex Richardson	atf_set "require.progs" "ksh93 zfs zpool zdb"
4232fae26bdSAlan Somers	atf_set "timeout" 3600
4242fae26bdSAlan Somers}
4252fae26bdSAlan Somershotspare_onoffline_004_neg_body()
4262fae26bdSAlan Somers{
4272fae26bdSAlan Somers	. $(atf_get_srcdir)/../../include/default.cfg
4282fae26bdSAlan Somers	. $(atf_get_srcdir)/hotspare.kshlib
4292fae26bdSAlan Somers	. $(atf_get_srcdir)/hotspare.cfg
4302fae26bdSAlan Somers
4312fae26bdSAlan Somers	ksh93 $(atf_get_srcdir)/setup.ksh || atf_fail "Setup failed"
4322fae26bdSAlan Somers	ksh93 $(atf_get_srcdir)/hotspare_onoffline_004_neg.ksh || atf_fail "Testcase failed"
4332fae26bdSAlan Somers}
4342fae26bdSAlan Somershotspare_onoffline_004_neg_cleanup()
4352fae26bdSAlan Somers{
4362fae26bdSAlan Somers	. $(atf_get_srcdir)/../../include/default.cfg
4372fae26bdSAlan Somers	. $(atf_get_srcdir)/hotspare.kshlib
4382fae26bdSAlan Somers	. $(atf_get_srcdir)/hotspare.cfg
4392fae26bdSAlan Somers
4402fae26bdSAlan Somers	ksh93 $(atf_get_srcdir)/cleanup.ksh || atf_fail "Cleanup failed"
4412fae26bdSAlan Somers}
4422fae26bdSAlan Somers
4432fae26bdSAlan Somers
4442fae26bdSAlan Somersatf_test_case hotspare_remove_001_pos cleanup
4452fae26bdSAlan Somershotspare_remove_001_pos_head()
4462fae26bdSAlan Somers{
4472fae26bdSAlan Somers	atf_set "descr" "'zpool remove <pool> <vdev> ...' can remove spare device from the pool."
4480b86424cSAlex Richardson	atf_set "require.progs" "ksh93 zpool"
4492fae26bdSAlan Somers	atf_set "timeout" 3600
4502fae26bdSAlan Somers}
4512fae26bdSAlan Somershotspare_remove_001_pos_body()
4522fae26bdSAlan Somers{
4532fae26bdSAlan Somers	. $(atf_get_srcdir)/../../include/default.cfg
4542fae26bdSAlan Somers	. $(atf_get_srcdir)/hotspare.kshlib
4552fae26bdSAlan Somers	. $(atf_get_srcdir)/hotspare.cfg
4562fae26bdSAlan Somers
4572fae26bdSAlan Somers	ksh93 $(atf_get_srcdir)/setup.ksh || atf_fail "Setup failed"
4582fae26bdSAlan Somers	ksh93 $(atf_get_srcdir)/hotspare_remove_001_pos.ksh || atf_fail "Testcase failed"
4592fae26bdSAlan Somers}
4602fae26bdSAlan Somershotspare_remove_001_pos_cleanup()
4612fae26bdSAlan Somers{
4622fae26bdSAlan Somers	. $(atf_get_srcdir)/../../include/default.cfg
4632fae26bdSAlan Somers	. $(atf_get_srcdir)/hotspare.kshlib
4642fae26bdSAlan Somers	. $(atf_get_srcdir)/hotspare.cfg
4652fae26bdSAlan Somers
4662fae26bdSAlan Somers	ksh93 $(atf_get_srcdir)/cleanup.ksh || atf_fail "Cleanup failed"
4672fae26bdSAlan Somers}
4682fae26bdSAlan Somers
4692fae26bdSAlan Somers
4702fae26bdSAlan Somersatf_test_case hotspare_remove_002_neg cleanup
4712fae26bdSAlan Somershotspare_remove_002_neg_head()
4722fae26bdSAlan Somers{
4732fae26bdSAlan Somers	atf_set "descr" "'zpool remove <pool> <vdev> ...' should fail with inapplicable scenarios."
4740b86424cSAlex Richardson	atf_set "require.progs" "ksh93 zpool"
4752fae26bdSAlan Somers	atf_set "timeout" 3600
4762fae26bdSAlan Somers}
4772fae26bdSAlan Somershotspare_remove_002_neg_body()
4782fae26bdSAlan Somers{
4792fae26bdSAlan Somers	. $(atf_get_srcdir)/../../include/default.cfg
4802fae26bdSAlan Somers	. $(atf_get_srcdir)/hotspare.kshlib
4812fae26bdSAlan Somers	. $(atf_get_srcdir)/hotspare.cfg
4822fae26bdSAlan Somers
4832fae26bdSAlan Somers	ksh93 $(atf_get_srcdir)/setup.ksh || atf_fail "Setup failed"
4842fae26bdSAlan Somers	ksh93 $(atf_get_srcdir)/hotspare_remove_002_neg.ksh || atf_fail "Testcase failed"
4852fae26bdSAlan Somers}
4862fae26bdSAlan Somershotspare_remove_002_neg_cleanup()
4872fae26bdSAlan Somers{
4882fae26bdSAlan Somers	. $(atf_get_srcdir)/../../include/default.cfg
4892fae26bdSAlan Somers	. $(atf_get_srcdir)/hotspare.kshlib
4902fae26bdSAlan Somers	. $(atf_get_srcdir)/hotspare.cfg
4912fae26bdSAlan Somers
4922fae26bdSAlan Somers	ksh93 $(atf_get_srcdir)/cleanup.ksh || atf_fail "Cleanup failed"
4932fae26bdSAlan Somers}
4942fae26bdSAlan Somers
4952fae26bdSAlan Somers
4962fae26bdSAlan Somersatf_test_case hotspare_remove_003_neg cleanup
4972fae26bdSAlan Somershotspare_remove_003_neg_head()
4982fae26bdSAlan Somers{
4992fae26bdSAlan Somers	atf_set "descr" "Executing 'zpool remove' with bad options fails"
5000b86424cSAlex Richardson	atf_set "require.progs" "ksh93 zpool"
5012fae26bdSAlan Somers	atf_set "timeout" 3600
5022fae26bdSAlan Somers}
5032fae26bdSAlan Somershotspare_remove_003_neg_body()
5042fae26bdSAlan Somers{
5052fae26bdSAlan Somers	. $(atf_get_srcdir)/../../include/default.cfg
5062fae26bdSAlan Somers	. $(atf_get_srcdir)/hotspare.kshlib
5072fae26bdSAlan Somers	. $(atf_get_srcdir)/hotspare.cfg
5082fae26bdSAlan Somers
5092fae26bdSAlan Somers	ksh93 $(atf_get_srcdir)/setup.ksh || atf_fail "Setup failed"
5102fae26bdSAlan Somers	ksh93 $(atf_get_srcdir)/hotspare_remove_003_neg.ksh || atf_fail "Testcase failed"
5112fae26bdSAlan Somers}
5122fae26bdSAlan Somershotspare_remove_003_neg_cleanup()
5132fae26bdSAlan Somers{
5142fae26bdSAlan Somers	. $(atf_get_srcdir)/../../include/default.cfg
5152fae26bdSAlan Somers	. $(atf_get_srcdir)/hotspare.kshlib
5162fae26bdSAlan Somers	. $(atf_get_srcdir)/hotspare.cfg
5172fae26bdSAlan Somers
5182fae26bdSAlan Somers	ksh93 $(atf_get_srcdir)/cleanup.ksh || atf_fail "Cleanup failed"
5192fae26bdSAlan Somers}
5202fae26bdSAlan Somers
5212fae26bdSAlan Somers
5222fae26bdSAlan Somersatf_test_case hotspare_remove_004_pos cleanup
5232fae26bdSAlan Somershotspare_remove_004_pos_head()
5242fae26bdSAlan Somers{
5252fae26bdSAlan Somers	atf_set "descr" "'zpool remove <pool> <vdev> ...' can remove spare device from the pool."
5260b86424cSAlex Richardson	atf_set "require.progs" "ksh93 zpool"
5272fae26bdSAlan Somers	atf_set "timeout" 3600
5282fae26bdSAlan Somers}
5292fae26bdSAlan Somershotspare_remove_004_pos_body()
5302fae26bdSAlan Somers{
5312fae26bdSAlan Somers	. $(atf_get_srcdir)/../../include/default.cfg
5322fae26bdSAlan Somers	. $(atf_get_srcdir)/hotspare.kshlib
5332fae26bdSAlan Somers	. $(atf_get_srcdir)/hotspare.cfg
5342fae26bdSAlan Somers
5352fae26bdSAlan Somers	ksh93 $(atf_get_srcdir)/setup.ksh || atf_fail "Setup failed"
5362fae26bdSAlan Somers	ksh93 $(atf_get_srcdir)/hotspare_remove_004_pos.ksh || atf_fail "Testcase failed"
5372fae26bdSAlan Somers}
5382fae26bdSAlan Somershotspare_remove_004_pos_cleanup()
5392fae26bdSAlan Somers{
5402fae26bdSAlan Somers	. $(atf_get_srcdir)/../../include/default.cfg
5412fae26bdSAlan Somers	. $(atf_get_srcdir)/hotspare.kshlib
5422fae26bdSAlan Somers	. $(atf_get_srcdir)/hotspare.cfg
5432fae26bdSAlan Somers
5442fae26bdSAlan Somers	ksh93 $(atf_get_srcdir)/cleanup.ksh || atf_fail "Cleanup failed"
5452fae26bdSAlan Somers}
5462fae26bdSAlan Somers
5472fae26bdSAlan Somers
5482fae26bdSAlan Somersatf_test_case hotspare_replace_001_neg cleanup
5492fae26bdSAlan Somershotspare_replace_001_neg_head()
5502fae26bdSAlan Somers{
5512fae26bdSAlan Somers	atf_set "descr" "'zpool replace <pool> <odev> <ndev>' should fail with inapplicable scenarios."
5520b86424cSAlex Richardson	atf_set "require.progs" "ksh93 zpool"
5532fae26bdSAlan Somers	atf_set "timeout" 3600
5542fae26bdSAlan Somers}
5552fae26bdSAlan Somershotspare_replace_001_neg_body()
5562fae26bdSAlan Somers{
5572fae26bdSAlan Somers	. $(atf_get_srcdir)/../../include/default.cfg
5582fae26bdSAlan Somers	. $(atf_get_srcdir)/hotspare.kshlib
5592fae26bdSAlan Somers	. $(atf_get_srcdir)/hotspare.cfg
5602fae26bdSAlan Somers
5612fae26bdSAlan Somers	ksh93 $(atf_get_srcdir)/setup.ksh || atf_fail "Setup failed"
5622fae26bdSAlan Somers	ksh93 $(atf_get_srcdir)/hotspare_replace_001_neg.ksh || atf_fail "Testcase failed"
5632fae26bdSAlan Somers}
5642fae26bdSAlan Somershotspare_replace_001_neg_cleanup()
5652fae26bdSAlan Somers{
5662fae26bdSAlan Somers	. $(atf_get_srcdir)/../../include/default.cfg
5672fae26bdSAlan Somers	. $(atf_get_srcdir)/hotspare.kshlib
5682fae26bdSAlan Somers	. $(atf_get_srcdir)/hotspare.cfg
5692fae26bdSAlan Somers
5702fae26bdSAlan Somers	ksh93 $(atf_get_srcdir)/cleanup.ksh || atf_fail "Cleanup failed"
5712fae26bdSAlan Somers}
5722fae26bdSAlan Somers
5732fae26bdSAlan Somers
5742fae26bdSAlan Somersatf_test_case hotspare_replace_002_neg cleanup
5752fae26bdSAlan Somershotspare_replace_002_neg_head()
5762fae26bdSAlan Somers{
5772fae26bdSAlan Somers	atf_set "descr" "'zpool replace <pool> <odev> <ndev>' should fail while the hot spares smaller than the basic vdev."
5780b86424cSAlex Richardson	atf_set "require.progs" "ksh93 zpool"
5792fae26bdSAlan Somers	atf_set "timeout" 3600
5802fae26bdSAlan Somers}
5812fae26bdSAlan Somershotspare_replace_002_neg_body()
5822fae26bdSAlan Somers{
5832fae26bdSAlan Somers	. $(atf_get_srcdir)/../../include/default.cfg
5842fae26bdSAlan Somers	. $(atf_get_srcdir)/hotspare.kshlib
5852fae26bdSAlan Somers	. $(atf_get_srcdir)/hotspare.cfg
5862fae26bdSAlan Somers
5872fae26bdSAlan Somers	ksh93 $(atf_get_srcdir)/setup.ksh || atf_fail "Setup failed"
5882fae26bdSAlan Somers	ksh93 $(atf_get_srcdir)/hotspare_replace_002_neg.ksh || atf_fail "Testcase failed"
5892fae26bdSAlan Somers}
5902fae26bdSAlan Somershotspare_replace_002_neg_cleanup()
5912fae26bdSAlan Somers{
5922fae26bdSAlan Somers	. $(atf_get_srcdir)/../../include/default.cfg
5932fae26bdSAlan Somers	. $(atf_get_srcdir)/hotspare.kshlib
5942fae26bdSAlan Somers	. $(atf_get_srcdir)/hotspare.cfg
5952fae26bdSAlan Somers
5962fae26bdSAlan Somers	ksh93 $(atf_get_srcdir)/cleanup.ksh || atf_fail "Cleanup failed"
5972fae26bdSAlan Somers}
5982fae26bdSAlan Somers
5992fae26bdSAlan Somers
6002fae26bdSAlan Somersatf_test_case hotspare_scrub_001_pos cleanup
6012fae26bdSAlan Somershotspare_scrub_001_pos_head()
6022fae26bdSAlan Somers{
6032fae26bdSAlan Somers	atf_set "descr" "'zpool scrub <pool>' should runs successfully regardlessthe hotspare is only in list or activated."
6040b86424cSAlex Richardson	atf_set "require.progs" "ksh93 zpool"
6052fae26bdSAlan Somers	atf_set "timeout" 3600
6062fae26bdSAlan Somers}
6072fae26bdSAlan Somershotspare_scrub_001_pos_body()
6082fae26bdSAlan Somers{
6092fae26bdSAlan Somers	. $(atf_get_srcdir)/../../include/default.cfg
6102fae26bdSAlan Somers	. $(atf_get_srcdir)/hotspare.kshlib
6112fae26bdSAlan Somers	. $(atf_get_srcdir)/hotspare.cfg
6122fae26bdSAlan Somers
6132fae26bdSAlan Somers	ksh93 $(atf_get_srcdir)/setup.ksh || atf_fail "Setup failed"
6142fae26bdSAlan Somers	ksh93 $(atf_get_srcdir)/hotspare_scrub_001_pos.ksh || atf_fail "Testcase failed"
6152fae26bdSAlan Somers}
6162fae26bdSAlan Somershotspare_scrub_001_pos_cleanup()
6172fae26bdSAlan Somers{
6182fae26bdSAlan Somers	. $(atf_get_srcdir)/../../include/default.cfg
6192fae26bdSAlan Somers	. $(atf_get_srcdir)/hotspare.kshlib
6202fae26bdSAlan Somers	. $(atf_get_srcdir)/hotspare.cfg
6212fae26bdSAlan Somers
6222fae26bdSAlan Somers	ksh93 $(atf_get_srcdir)/cleanup.ksh || atf_fail "Cleanup failed"
6232fae26bdSAlan Somers}
6242fae26bdSAlan Somers
6252fae26bdSAlan Somers
6262fae26bdSAlan Somersatf_test_case hotspare_scrub_002_pos cleanup
6272fae26bdSAlan Somershotspare_scrub_002_pos_head()
6282fae26bdSAlan Somers{
6292fae26bdSAlan Somers	atf_set "descr" "'zpool scrub' scans spare vdevs"
6300b86424cSAlex Richardson	atf_set "require.progs" "ksh93 zpool"
6312fae26bdSAlan Somers}
6322fae26bdSAlan Somershotspare_scrub_002_pos_body()
6332fae26bdSAlan Somers{
6342fae26bdSAlan Somers	. $(atf_get_srcdir)/../../include/default.cfg
6352fae26bdSAlan Somers	. $(atf_get_srcdir)/hotspare.kshlib
6362fae26bdSAlan Somers	. $(atf_get_srcdir)/hotspare.cfg
6372fae26bdSAlan Somers
638bbacbaccSAlan Somers	atf_expect_fail "PR 241069 scrub does not detect all errors on active spares"
6392fae26bdSAlan Somers	ksh93 $(atf_get_srcdir)/setup.ksh || atf_fail "Setup failed"
6402fae26bdSAlan Somers	ksh93 $(atf_get_srcdir)/hotspare_scrub_002_pos.ksh || atf_fail "Testcase failed"
6412fae26bdSAlan Somers}
6422fae26bdSAlan Somershotspare_scrub_002_pos_cleanup()
6432fae26bdSAlan Somers{
6442fae26bdSAlan Somers	. $(atf_get_srcdir)/../../include/default.cfg
6452fae26bdSAlan Somers	. $(atf_get_srcdir)/hotspare.kshlib
6462fae26bdSAlan Somers	. $(atf_get_srcdir)/hotspare.cfg
6472fae26bdSAlan Somers
6482fae26bdSAlan Somers	ksh93 $(atf_get_srcdir)/cleanup.ksh || atf_fail "Cleanup failed"
6492fae26bdSAlan Somers}
6502fae26bdSAlan Somers
6512fae26bdSAlan Somers
6522fae26bdSAlan Somersatf_test_case hotspare_shared_001_pos cleanup
6532fae26bdSAlan Somershotspare_shared_001_pos_head()
6542fae26bdSAlan Somers{
6552fae26bdSAlan Somers	atf_set "descr" "'zpool add <pool> spare <vdev> ...' can add a disk as a shared spare to multiple pools."
6560b86424cSAlex Richardson	atf_set "require.progs" "ksh93 zpool"
6572fae26bdSAlan Somers	atf_set "timeout" 3600
6582fae26bdSAlan Somers}
6592fae26bdSAlan Somershotspare_shared_001_pos_body()
6602fae26bdSAlan Somers{
6612fae26bdSAlan Somers	. $(atf_get_srcdir)/../../include/default.cfg
6622fae26bdSAlan Somers	. $(atf_get_srcdir)/hotspare.kshlib
6632fae26bdSAlan Somers	. $(atf_get_srcdir)/hotspare.cfg
6642fae26bdSAlan Somers
6652fae26bdSAlan Somers	verify_disk_count "$DISKS" 5
6662fae26bdSAlan Somers	ksh93 $(atf_get_srcdir)/setup.ksh || atf_fail "Setup failed"
6672fae26bdSAlan Somers	ksh93 $(atf_get_srcdir)/hotspare_shared_001_pos.ksh || atf_fail "Testcase failed"
6682fae26bdSAlan Somers}
6692fae26bdSAlan Somershotspare_shared_001_pos_cleanup()
6702fae26bdSAlan Somers{
6712fae26bdSAlan Somers	. $(atf_get_srcdir)/../../include/default.cfg
6722fae26bdSAlan Somers	. $(atf_get_srcdir)/hotspare.kshlib
6732fae26bdSAlan Somers	. $(atf_get_srcdir)/hotspare.cfg
6742fae26bdSAlan Somers
6752fae26bdSAlan Somers	ksh93 $(atf_get_srcdir)/cleanup.ksh || atf_fail "Cleanup failed"
6762fae26bdSAlan Somers}
6772fae26bdSAlan Somers
6782fae26bdSAlan Somers
6792fae26bdSAlan Somersatf_test_case hotspare_snapshot_001_pos cleanup
6802fae26bdSAlan Somershotspare_snapshot_001_pos_head()
6812fae26bdSAlan Somers{
6822fae26bdSAlan Somers	atf_set "descr" "'zpool detach <pool> <vdev> ...' against hotspare should do no harm to snapshot."
6830b86424cSAlex Richardson	atf_set "require.progs" "ksh93 zfs zpool sum"
6842fae26bdSAlan Somers	atf_set "timeout" 3600
6852fae26bdSAlan Somers}
6862fae26bdSAlan Somershotspare_snapshot_001_pos_body()
6872fae26bdSAlan Somers{
6882fae26bdSAlan Somers	. $(atf_get_srcdir)/../../include/default.cfg
6892fae26bdSAlan Somers	. $(atf_get_srcdir)/hotspare.kshlib
6902fae26bdSAlan Somers	. $(atf_get_srcdir)/hotspare.cfg
6912fae26bdSAlan Somers
6922fae26bdSAlan Somers	ksh93 $(atf_get_srcdir)/setup.ksh || atf_fail "Setup failed"
6932fae26bdSAlan Somers	ksh93 $(atf_get_srcdir)/hotspare_snapshot_001_pos.ksh || atf_fail "Testcase failed"
6942fae26bdSAlan Somers}
6952fae26bdSAlan Somershotspare_snapshot_001_pos_cleanup()
6962fae26bdSAlan Somers{
6972fae26bdSAlan Somers	. $(atf_get_srcdir)/../../include/default.cfg
6982fae26bdSAlan Somers	. $(atf_get_srcdir)/hotspare.kshlib
6992fae26bdSAlan Somers	. $(atf_get_srcdir)/hotspare.cfg
7002fae26bdSAlan Somers
7012fae26bdSAlan Somers	ksh93 $(atf_get_srcdir)/cleanup.ksh || atf_fail "Cleanup failed"
7022fae26bdSAlan Somers}
7032fae26bdSAlan Somers
7042fae26bdSAlan Somers
7052fae26bdSAlan Somersatf_test_case hotspare_snapshot_002_pos cleanup
7062fae26bdSAlan Somershotspare_snapshot_002_pos_head()
7072fae26bdSAlan Somers{
7082fae26bdSAlan Somers	atf_set "descr" "'zpool detach <pool> <vdev> ...' against basic vdev do no harm to snapshot."
7090b86424cSAlex Richardson	atf_set "require.progs" "ksh93 zfs zpool sum"
7102fae26bdSAlan Somers	atf_set "timeout" 3600
7112fae26bdSAlan Somers}
7122fae26bdSAlan Somershotspare_snapshot_002_pos_body()
7132fae26bdSAlan Somers{
7142fae26bdSAlan Somers	. $(atf_get_srcdir)/../../include/default.cfg
7152fae26bdSAlan Somers	. $(atf_get_srcdir)/hotspare.kshlib
7162fae26bdSAlan Somers	. $(atf_get_srcdir)/hotspare.cfg
7172fae26bdSAlan Somers
7182fae26bdSAlan Somers	ksh93 $(atf_get_srcdir)/setup.ksh || atf_fail "Setup failed"
7192fae26bdSAlan Somers	ksh93 $(atf_get_srcdir)/hotspare_snapshot_002_pos.ksh || atf_fail "Testcase failed"
7202fae26bdSAlan Somers}
7212fae26bdSAlan Somershotspare_snapshot_002_pos_cleanup()
7222fae26bdSAlan Somers{
7232fae26bdSAlan Somers	. $(atf_get_srcdir)/../../include/default.cfg
7242fae26bdSAlan Somers	. $(atf_get_srcdir)/hotspare.kshlib
7252fae26bdSAlan Somers	. $(atf_get_srcdir)/hotspare.cfg
7262fae26bdSAlan Somers
7272fae26bdSAlan Somers	ksh93 $(atf_get_srcdir)/cleanup.ksh || atf_fail "Cleanup failed"
7282fae26bdSAlan Somers}
7292fae26bdSAlan Somers
7302fae26bdSAlan Somers
7312fae26bdSAlan Somersatf_init_test_cases()
7322fae26bdSAlan Somers{
7332fae26bdSAlan Somers
7342fae26bdSAlan Somers	atf_add_test_case hotspare_add_001_pos
7352fae26bdSAlan Somers	atf_add_test_case hotspare_add_002_pos
7362fae26bdSAlan Somers	atf_add_test_case hotspare_add_003_neg
7372fae26bdSAlan Somers	atf_add_test_case hotspare_add_004_neg
7382fae26bdSAlan Somers	atf_add_test_case hotspare_clone_001_pos
7392fae26bdSAlan Somers	atf_add_test_case hotspare_clone_002_pos
7402fae26bdSAlan Somers	atf_add_test_case hotspare_create_001_neg
7412fae26bdSAlan Somers	atf_add_test_case hotspare_detach_001_pos
7422fae26bdSAlan Somers	atf_add_test_case hotspare_detach_002_pos
7432fae26bdSAlan Somers	atf_add_test_case hotspare_detach_003_pos
7442fae26bdSAlan Somers	atf_add_test_case hotspare_detach_004_pos
7452fae26bdSAlan Somers	atf_add_test_case hotspare_detach_005_neg
7462fae26bdSAlan Somers	atf_add_test_case hotspare_export_001_neg
7472fae26bdSAlan Somers	atf_add_test_case hotspare_import_001_pos
7482fae26bdSAlan Somers	atf_add_test_case hotspare_onoffline_003_neg
7492fae26bdSAlan Somers	atf_add_test_case hotspare_onoffline_004_neg
7502fae26bdSAlan Somers	atf_add_test_case hotspare_remove_001_pos
7512fae26bdSAlan Somers	atf_add_test_case hotspare_remove_002_neg
7522fae26bdSAlan Somers	atf_add_test_case hotspare_remove_003_neg
7532fae26bdSAlan Somers	atf_add_test_case hotspare_remove_004_pos
7542fae26bdSAlan Somers	atf_add_test_case hotspare_replace_001_neg
7552fae26bdSAlan Somers	atf_add_test_case hotspare_replace_002_neg
7562fae26bdSAlan Somers	atf_add_test_case hotspare_scrub_001_pos
7572fae26bdSAlan Somers	atf_add_test_case hotspare_scrub_002_pos
7582fae26bdSAlan Somers	atf_add_test_case hotspare_shared_001_pos
7592fae26bdSAlan Somers	atf_add_test_case hotspare_snapshot_001_pos
7602fae26bdSAlan Somers	atf_add_test_case hotspare_snapshot_002_pos
7612fae26bdSAlan Somers}
762