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,2013 Spectra Logic. All rights reserved. 25# Use is subject to license terms. 26# 27 28 29atf_test_case zfsd_fault_001_pos cleanup 30zfsd_fault_001_pos_head() 31{ 32 atf_set "descr" "ZFS will fault a vdev that produces IO errors" 33 atf_set "require.progs" "ksh93 zfs zpool zfsd" 34 atf_set "timeout" 300 35} 36zfsd_fault_001_pos_body() 37{ 38 . $(atf_get_srcdir)/../../include/default.cfg 39 . $(atf_get_srcdir)/zfsd.cfg 40 41 verify_disk_count "$DISKS" 2 42 verify_zfsd_running 43 ksh93 $(atf_get_srcdir)/setup.ksh || atf_fail "Setup failed" 44 ksh93 $(atf_get_srcdir)/zfsd_fault_001_pos.ksh 45 if [[ $? != 0 ]]; then 46 save_artifacts 47 atf_fail "Testcase failed" 48 fi 49} 50zfsd_fault_001_pos_cleanup() 51{ 52 . $(atf_get_srcdir)/../../include/default.cfg 53 . $(atf_get_srcdir)/zfsd.cfg 54 55 ksh93 $(atf_get_srcdir)/cleanup.ksh || atf_fail "Cleanup failed" 56} 57 58 59atf_test_case zfsd_degrade_001_pos cleanup 60zfsd_degrade_001_pos_head() 61{ 62 atf_set "descr" "ZFS will degrade a vdev that produces checksum errors" 63 atf_set "require.progs" "ksh93 zpool zfsd" 64 atf_set "timeout" 600 65} 66zfsd_degrade_001_pos_body() 67{ 68 . $(atf_get_srcdir)/../../include/default.cfg 69 . $(atf_get_srcdir)/zfsd.cfg 70 71 verify_disk_count "$DISKS" 2 72 verify_zfsd_running 73 ksh93 $(atf_get_srcdir)/setup.ksh || atf_fail "Setup failed" 74 ksh93 $(atf_get_srcdir)/zfsd_degrade_001_pos.ksh 75 if [[ $? != 0 ]]; then 76 save_artifacts 77 atf_fail "Testcase failed" 78 fi 79} 80zfsd_degrade_001_pos_cleanup() 81{ 82 . $(atf_get_srcdir)/../../include/default.cfg 83 . $(atf_get_srcdir)/zfsd.cfg 84 85 ksh93 $(atf_get_srcdir)/cleanup.ksh || atf_fail "Cleanup failed" 86} 87 88atf_test_case zfsd_degrade_002_pos cleanup 89zfsd_degrade_002_pos_head() 90{ 91 atf_set "descr" "ZFS will degrade a spare that produces checksum errors" 92 atf_set "require.progs" "ksh93 zpool zfsd" 93 atf_set "timeout" 600 94} 95zfsd_degrade_002_pos_body() 96{ 97 atf_expect_fail "https://www.illumos.org/issues/8614 Checksum errors on a mirrored child of a raidz are incorrectly accounted" 98 . $(atf_get_srcdir)/../../include/default.cfg 99 . $(atf_get_srcdir)/zfsd.cfg 100 101 verify_disk_count "$DISKS" 5 102 verify_zfsd_running 103 ksh93 $(atf_get_srcdir)/setup.ksh || atf_fail "Setup failed" 104 ksh93 $(atf_get_srcdir)/zfsd_degrade_002_pos.ksh 105 if [[ $? != 0 ]]; then 106 save_artifacts 107 atf_fail "Testcase failed" 108 fi 109} 110zfsd_degrade_002_pos_cleanup() 111{ 112 . $(atf_get_srcdir)/../../include/default.cfg 113 . $(atf_get_srcdir)/zfsd.cfg 114 115 ksh93 $(atf_get_srcdir)/cleanup.ksh || atf_fail "Cleanup failed" 116} 117 118 119atf_test_case zfsd_hotspare_001_pos cleanup 120zfsd_hotspare_001_pos_head() 121{ 122 atf_set "descr" "An active, damaged spare will be replaced by an available spare" 123 atf_set "require.progs" "ksh93 zpool zfsd" 124 atf_set "timeout" 3600 125} 126zfsd_hotspare_001_pos_body() 127{ 128 . $(atf_get_srcdir)/../../include/default.cfg 129 . $(atf_get_srcdir)/../hotspare/hotspare.kshlib 130 . $(atf_get_srcdir)/../hotspare/hotspare.cfg 131 132 verify_zfsd_running 133 ksh93 $(atf_get_srcdir)/hotspare_setup.ksh || atf_fail "Setup failed" 134 ksh93 $(atf_get_srcdir)/zfsd_hotspare_001_pos.ksh 135 if [[ $? != 0 ]]; then 136 save_artifacts 137 atf_fail "Testcase failed" 138 fi 139} 140zfsd_hotspare_001_pos_cleanup() 141{ 142 . $(atf_get_srcdir)/../../include/default.cfg 143 . $(atf_get_srcdir)/../hotspare/hotspare.kshlib 144 . $(atf_get_srcdir)/../hotspare/hotspare.cfg 145 146 ksh93 $(atf_get_srcdir)/hotspare_cleanup.ksh || atf_fail "Cleanup failed" 147} 148 149atf_test_case zfsd_hotspare_002_pos cleanup 150zfsd_hotspare_002_pos_head() 151{ 152 atf_set "descr" "If a vdev becomes degraded, the spare will be activated." 153 atf_set "require.progs" "ksh93 zpool zfsd zinject" 154 atf_set "timeout" 3600 155} 156zfsd_hotspare_002_pos_body() 157{ 158 . $(atf_get_srcdir)/../../include/default.cfg 159 . $(atf_get_srcdir)/../hotspare/hotspare.kshlib 160 . $(atf_get_srcdir)/../hotspare/hotspare.cfg 161 162 verify_zfsd_running 163 ksh93 $(atf_get_srcdir)/hotspare_setup.ksh || atf_fail "Setup failed" 164 ksh93 $(atf_get_srcdir)/zfsd_hotspare_002_pos.ksh 165 if [[ $? != 0 ]]; then 166 save_artifacts 167 atf_fail "Testcase failed" 168 fi 169} 170zfsd_hotspare_002_pos_cleanup() 171{ 172 . $(atf_get_srcdir)/../../include/default.cfg 173 . $(atf_get_srcdir)/../hotspare/hotspare.kshlib 174 . $(atf_get_srcdir)/../hotspare/hotspare.cfg 175 176 ksh93 $(atf_get_srcdir)/hotspare_cleanup.ksh || atf_fail "Cleanup failed" 177} 178 179 180atf_test_case zfsd_hotspare_003_pos cleanup 181zfsd_hotspare_003_pos_head() 182{ 183 atf_set "descr" "A faulted vdev will be replaced by an available spare" 184 atf_set "require.progs" "ksh93 zpool zfsd zinject" 185 atf_set "timeout" 3600 186} 187zfsd_hotspare_003_pos_body() 188{ 189 . $(atf_get_srcdir)/../../include/default.cfg 190 . $(atf_get_srcdir)/../hotspare/hotspare.kshlib 191 . $(atf_get_srcdir)/../hotspare/hotspare.cfg 192 193 verify_disk_count "$DISKS" 5 194 verify_zfsd_running 195 ksh93 $(atf_get_srcdir)/hotspare_setup.ksh || atf_fail "Setup failed" 196 ksh93 $(atf_get_srcdir)/zfsd_hotspare_003_pos.ksh 197 if [[ $? != 0 ]]; then 198 save_artifacts 199 atf_fail "Testcase failed" 200 fi 201} 202zfsd_hotspare_003_pos_cleanup() 203{ 204 . $(atf_get_srcdir)/../../include/default.cfg 205 . $(atf_get_srcdir)/../hotspare/hotspare.kshlib 206 . $(atf_get_srcdir)/../hotspare/hotspare.cfg 207 208 ksh93 $(atf_get_srcdir)/hotspare_cleanup.ksh || atf_fail "Cleanup failed" 209} 210 211atf_test_case zfsd_hotspare_004_pos cleanup 212zfsd_hotspare_004_pos_head() 213{ 214 atf_set "descr" "Removing a disk from a pool results in the spare activating" 215 atf_set "require.progs" "ksh93 gnop zpool camcontrol zfsd" 216 atf_set "timeout" 3600 217} 218zfsd_hotspare_004_pos_body() 219{ 220 . $(atf_get_srcdir)/../../include/default.cfg 221 . $(atf_get_srcdir)/../hotspare/hotspare.kshlib 222 . $(atf_get_srcdir)/../hotspare/hotspare.cfg 223 224 verify_disk_count "$DISKS" 5 225 verify_zfsd_running 226 ksh93 $(atf_get_srcdir)/hotspare_setup.ksh || atf_fail "Setup failed" 227 ksh93 $(atf_get_srcdir)/zfsd_hotspare_004_pos.ksh 228 if [[ $? != 0 ]]; then 229 save_artifacts 230 atf_fail "Testcase failed" 231 fi 232} 233zfsd_hotspare_004_pos_cleanup() 234{ 235 . $(atf_get_srcdir)/../../include/default.cfg 236 . $(atf_get_srcdir)/../hotspare/hotspare.kshlib 237 . $(atf_get_srcdir)/../hotspare/hotspare.cfg 238 239 ksh93 $(atf_get_srcdir)/cleanup.ksh || atf_fail "Cleanup failed" 240} 241 242atf_test_case zfsd_hotspare_005_pos cleanup 243zfsd_hotspare_005_pos_head() 244{ 245 atf_set "descr" "A spare that is added to a degraded pool will be activated" 246 atf_set "require.progs" "ksh93 zpool zfsd zinject" 247 atf_set "timeout" 3600 248} 249zfsd_hotspare_005_pos_body() 250{ 251 . $(atf_get_srcdir)/../../include/default.cfg 252 . $(atf_get_srcdir)/../hotspare/hotspare.kshlib 253 . $(atf_get_srcdir)/../hotspare/hotspare.cfg 254 255 verify_zfsd_running 256 ksh93 $(atf_get_srcdir)/hotspare_setup.ksh || atf_fail "Setup failed" 257 ksh93 $(atf_get_srcdir)/zfsd_hotspare_005_pos.ksh 258 if [[ $? != 0 ]]; then 259 save_artifacts 260 atf_fail "Testcase failed" 261 fi 262} 263zfsd_hotspare_005_pos_cleanup() 264{ 265 . $(atf_get_srcdir)/../../include/default.cfg 266 . $(atf_get_srcdir)/../hotspare/hotspare.kshlib 267 . $(atf_get_srcdir)/../hotspare/hotspare.cfg 268 269 ksh93 $(atf_get_srcdir)/hotspare_cleanup.ksh || atf_fail "Cleanup failed" 270} 271 272atf_test_case zfsd_hotspare_006_pos cleanup 273zfsd_hotspare_006_pos_head() 274{ 275 atf_set "descr" "zfsd will replace two vdevs that fail simultaneously" 276 atf_set "require.progs" "ksh93 zpool zfsd zinject" 277 atf_set "timeout" 3600 278} 279zfsd_hotspare_006_pos_body() 280{ 281 . $(atf_get_srcdir)/../../include/default.cfg 282 . $(atf_get_srcdir)/../hotspare/hotspare.kshlib 283 . $(atf_get_srcdir)/../hotspare/hotspare.cfg 284 285 verify_zfsd_running 286 ksh93 $(atf_get_srcdir)/hotspare_setup.ksh || atf_fail "Setup failed" 287 ksh93 $(atf_get_srcdir)/zfsd_hotspare_006_pos.ksh 288 if [[ $? != 0 ]]; then 289 save_artifacts 290 atf_fail "Testcase failed" 291 fi 292} 293zfsd_hotspare_006_pos_cleanup() 294{ 295 . $(atf_get_srcdir)/../../include/default.cfg 296 . $(atf_get_srcdir)/../hotspare/hotspare.kshlib 297 . $(atf_get_srcdir)/../hotspare/hotspare.cfg 298 299 ksh93 $(atf_get_srcdir)/hotspare_cleanup.ksh || atf_fail "Cleanup failed" 300} 301 302atf_test_case zfsd_hotspare_007_pos cleanup 303zfsd_hotspare_007_pos_head() 304{ 305 atf_set "descr" "zfsd will swap failed drives at startup" 306 atf_set "require.progs" "ksh93 gnop zpool camcontrol zfsd" 307 atf_set "timeout" 3600 308} 309zfsd_hotspare_007_pos_body() 310{ 311 . $(atf_get_srcdir)/../../include/default.cfg 312 . $(atf_get_srcdir)/../hotspare/hotspare.kshlib 313 . $(atf_get_srcdir)/../hotspare/hotspare.cfg 314 315 verify_disk_count "$DISKS" 5 316 verify_zfsd_running 317 ksh93 $(atf_get_srcdir)/hotspare_setup.ksh || atf_fail "Setup failed" 318 ksh93 $(atf_get_srcdir)/zfsd_hotspare_007_pos.ksh 319 if [[ $? != 0 ]]; then 320 save_artifacts 321 atf_fail "Testcase failed" 322 fi 323} 324zfsd_hotspare_007_pos_cleanup() 325{ 326 . $(atf_get_srcdir)/../../include/default.cfg 327 . $(atf_get_srcdir)/../hotspare/hotspare.kshlib 328 . $(atf_get_srcdir)/../hotspare/hotspare.cfg 329 330 ksh93 $(atf_get_srcdir)/cleanup.ksh || atf_fail "Cleanup failed" 331} 332 333atf_test_case zfsd_hotspare_008_neg cleanup 334zfsd_hotspare_008_neg_head() 335{ 336 atf_set "descr" "zfsd will not use newly added spares on replacing vdevs" 337 atf_set "require.progs" "ksh93 zpool zfsd" 338 atf_set "timeout" 3600 339} 340zfsd_hotspare_008_neg_body() 341{ 342 . $(atf_get_srcdir)/../../include/default.cfg 343 . $(atf_get_srcdir)/../hotspare/hotspare.kshlib 344 . $(atf_get_srcdir)/../hotspare/hotspare.cfg 345 346 verify_disk_count "$DISKS" 4 347 ksh93 $(atf_get_srcdir)/hotspare_setup.ksh || atf_fail "Setup failed" 348 ksh93 $(atf_get_srcdir)/zfsd_hotspare_008_neg.ksh 349 if [[ $? != 0 ]]; then 350 save_artifacts 351 atf_fail "Testcase failed" 352 fi 353} 354zfsd_hotspare_008_neg_cleanup() 355{ 356 . $(atf_get_srcdir)/../../include/default.cfg 357 . $(atf_get_srcdir)/../hotspare/hotspare.kshlib 358 . $(atf_get_srcdir)/../hotspare/hotspare.cfg 359 360 ksh93 $(atf_get_srcdir)/hotspare_cleanup.ksh || atf_fail "Cleanup failed" 361} 362 363atf_test_case zfsd_autoreplace_001_neg cleanup 364zfsd_autoreplace_001_neg_head() 365{ 366 atf_set "descr" "A pool without autoreplace set will not replace by physical path" 367 atf_set "require.progs" "ksh93 zpool camcontrol zfsd gnop" 368 atf_set "timeout" 3600 369} 370zfsd_autoreplace_001_neg_body() 371{ 372 . $(atf_get_srcdir)/../../include/default.cfg 373 . $(atf_get_srcdir)/../hotspare/hotspare.kshlib 374 . $(atf_get_srcdir)/../hotspare/hotspare.cfg 375 376 verify_disk_count "$DISKS" 5 377 ksh93 $(atf_get_srcdir)/hotspare_setup.ksh || atf_fail "Setup failed" 378 ksh93 $(atf_get_srcdir)/zfsd_autoreplace_001_neg.ksh 379 if [[ $? != 0 ]]; then 380 save_artifacts 381 atf_fail "Testcase failed" 382 fi 383} 384zfsd_autoreplace_001_neg_cleanup() 385{ 386 . $(atf_get_srcdir)/../../include/default.cfg 387 . $(atf_get_srcdir)/../hotspare/hotspare.kshlib 388 . $(atf_get_srcdir)/../hotspare/hotspare.cfg 389 390 ksh93 $(atf_get_srcdir)/cleanup.ksh || atf_fail "Cleanup failed" 391} 392 393atf_test_case zfsd_autoreplace_002_pos cleanup 394zfsd_autoreplace_002_pos_head() 395{ 396 atf_set "descr" "A pool with autoreplace set will replace by physical path" 397 atf_set "require.progs" "ksh93 gnop zpool zfsd" 398 atf_set "timeout" 3600 399} 400zfsd_autoreplace_002_pos_body() 401{ 402 . $(atf_get_srcdir)/../../include/default.cfg 403 . $(atf_get_srcdir)/../hotspare/hotspare.kshlib 404 . $(atf_get_srcdir)/../hotspare/hotspare.cfg 405 406 verify_disk_count "$DISKS" 5 407 verify_zfsd_running 408 ksh93 $(atf_get_srcdir)/hotspare_setup.ksh || atf_fail "Setup failed" 409 ksh93 $(atf_get_srcdir)/zfsd_autoreplace_002_pos.ksh 410 if [[ $? != 0 ]]; then 411 save_artifacts 412 atf_fail "Testcase failed" 413 fi 414} 415zfsd_autoreplace_002_pos_cleanup() 416{ 417 . $(atf_get_srcdir)/../../include/default.cfg 418 . $(atf_get_srcdir)/../hotspare/hotspare.kshlib 419 . $(atf_get_srcdir)/../hotspare/hotspare.cfg 420 421 ksh93 $(atf_get_srcdir)/cleanup.ksh || atf_fail "Cleanup failed" 422} 423 424atf_test_case zfsd_autoreplace_003_pos cleanup 425zfsd_autoreplace_003_pos_head() 426{ 427 atf_set "descr" "A pool with autoreplace set will replace by physical path even if a spare is active" 428 atf_set "require.progs" "ksh93 zpool camcontrol zfsd gnop" 429 atf_set "timeout" 3600 430} 431zfsd_autoreplace_003_pos_body() 432{ 433 . $(atf_get_srcdir)/../../include/default.cfg 434 . $(atf_get_srcdir)/../hotspare/hotspare.kshlib 435 . $(atf_get_srcdir)/../hotspare/hotspare.cfg 436 437 verify_disk_count "$DISKS" 5 438 verify_zfsd_running 439 ksh93 $(atf_get_srcdir)/hotspare_setup.ksh || atf_fail "Setup failed" 440 ksh93 $(atf_get_srcdir)/zfsd_autoreplace_003_pos.ksh 441 if [[ $? != 0 ]]; then 442 save_artifacts 443 atf_fail "Testcase failed" 444 fi 445} 446zfsd_autoreplace_003_pos_cleanup() 447{ 448 . $(atf_get_srcdir)/../../include/default.cfg 449 . $(atf_get_srcdir)/../hotspare/hotspare.kshlib 450 . $(atf_get_srcdir)/../hotspare/hotspare.cfg 451 452 ksh93 $(atf_get_srcdir)/cleanup.ksh || atf_fail "Cleanup failed" 453} 454 455atf_test_case zfsd_replace_001_pos cleanup 456zfsd_replace_001_pos_head() 457{ 458 atf_set "descr" "ZFSD will automatically replace a SAS disk that disappears and reappears in the same location, with the same devname" 459 atf_set "require.progs" "ksh93 zpool camcontrol zfsd zfs gnop" 460} 461zfsd_replace_001_pos_body() 462{ 463 . $(atf_get_srcdir)/../../include/default.cfg 464 . $(atf_get_srcdir)/zfsd.cfg 465 466 verify_disk_count "$DISKS" 3 467 verify_zfsd_running 468 ksh93 $(atf_get_srcdir)/setup.ksh || atf_fail "Setup failed" 469 ksh93 $(atf_get_srcdir)/zfsd_replace_001_pos.ksh 470 if [[ $? != 0 ]]; then 471 save_artifacts 472 atf_fail "Testcase failed" 473 fi 474} 475zfsd_replace_001_pos_cleanup() 476{ 477 . $(atf_get_srcdir)/../../include/default.cfg 478 . $(atf_get_srcdir)/zfsd.cfg 479 480 ksh93 $(atf_get_srcdir)/cleanup.ksh || atf_fail "Cleanup failed" 481} 482 483 484atf_test_case zfsd_replace_002_pos cleanup 485zfsd_replace_002_pos_head() 486{ 487 atf_set "descr" "zfsd will reactivate a pool after all disks are failed and reappeared" 488 atf_set "require.progs" "ksh93 zpool camcontrol zfsd zfs" 489} 490zfsd_replace_002_pos_body() 491{ 492 atf_expect_fail "Not yet implemented in zfsd" 493 . $(atf_get_srcdir)/../../include/default.cfg 494 . $(atf_get_srcdir)/zfsd.cfg 495 496 verify_disk_count "$DISKS" 3 497 verify_zfsd_running 498 ksh93 $(atf_get_srcdir)/setup.ksh || atf_fail "Setup failed" 499 ksh93 $(atf_get_srcdir)/zfsd_replace_002_pos.ksh 500 if [[ $? != 0 ]]; then 501 save_artifacts 502 atf_fail "Testcase failed" 503 fi 504} 505zfsd_replace_002_pos_cleanup() 506{ 507 . $(atf_get_srcdir)/../../include/default.cfg 508 . $(atf_get_srcdir)/zfsd.cfg 509 510 ksh93 $(atf_get_srcdir)/cleanup.ksh || atf_fail "Cleanup failed" 511} 512 513atf_test_case zfsd_replace_003_pos cleanup 514zfsd_replace_003_pos_head() 515{ 516 atf_set "descr" "ZFSD will correctly replace disks that dissapear and reappear with different devnames" 517 atf_set "require.progs" "ksh93 zpool camcontrol zfsd zfs gnop" 518} 519zfsd_replace_003_pos_body() 520{ 521 . $(atf_get_srcdir)/../../include/default.cfg 522 . $(atf_get_srcdir)/../hotspare/hotspare.kshlib 523 . $(atf_get_srcdir)/../hotspare/hotspare.cfg 524 525 verify_zfsd_running 526 ksh93 $(atf_get_srcdir)/setup.ksh || atf_fail "Setup failed" 527 ksh93 $(atf_get_srcdir)/zfsd_replace_003_pos.ksh 528 if [[ $? != 0 ]]; then 529 save_artifacts 530 atf_fail "Testcase failed" 531 fi 532} 533zfsd_replace_003_pos_cleanup() 534{ 535 . $(atf_get_srcdir)/../../include/default.cfg 536 . $(atf_get_srcdir)/zfsd.cfg 537 538 ksh93 $(atf_get_srcdir)/cleanup.ksh || atf_fail "Cleanup failed" 539} 540 541atf_test_case zfsd_replace_004_pos cleanup 542zfsd_replace_004_pos_head() 543{ 544 atf_set "descr" "ZFSD will automatically replace a spare that disappears and reappears in the same location, with the same devname" 545 atf_set "require.progs" "ksh93 zpool zfs gnop" 546} 547zfsd_replace_004_pos_body() 548{ 549 . $(atf_get_srcdir)/../../include/default.cfg 550 . $(atf_get_srcdir)/zfsd.cfg 551 552 verify_disk_count "$DISKS" 2 553 verify_zfsd_running 554 ksh93 $(atf_get_srcdir)/setup.ksh || atf_fail "Setup failed" 555 ksh93 $(atf_get_srcdir)/zfsd_replace_004_pos.ksh 556 if [[ $? != 0 ]]; then 557 save_artifacts 558 atf_fail "Testcase failed" 559 fi 560} 561zfsd_replace_004_pos_cleanup() 562{ 563 . $(atf_get_srcdir)/../../include/default.cfg 564 . $(atf_get_srcdir)/zfsd.cfg 565 566 ksh93 $(atf_get_srcdir)/cleanup.ksh || atf_fail "Cleanup failed" 567} 568 569atf_test_case zfsd_replace_005_pos cleanup 570zfsd_replace_005_pos_head() 571{ 572 atf_set "descr" "ZFSD will automatically replace a multi-pool spare that disappears and reappears" 573 atf_set "require.progs" "ksh93 zpool zfs gnop" 574} 575zfsd_replace_005_pos_body() 576{ 577 . $(atf_get_srcdir)/../../include/default.cfg 578 . $(atf_get_srcdir)/zfsd.cfg 579 580 verify_disk_count "$DISKS" 3 581 verify_zfsd_running 582 ksh93 $(atf_get_srcdir)/setup.ksh || atf_fail "Setup failed" 583 ksh93 $(atf_get_srcdir)/zfsd_replace_005_pos.ksh 584 if [[ $? != 0 ]]; then 585 save_artifacts 586 atf_fail "Testcase failed" 587 fi 588} 589zfsd_replace_005_pos_cleanup() 590{ 591 . $(atf_get_srcdir)/../../include/default.cfg 592 . $(atf_get_srcdir)/zfsd.cfg 593 594 ksh93 $(atf_get_srcdir)/cleanup.ksh || atf_fail "Cleanup failed" 595} 596 597atf_test_case zfsd_import_001_pos cleanup 598zfsd_import_001_pos_head() 599{ 600 atf_set "descr" "If a removed drive gets reinserted while the pool is exported, it will detach its spare when imported." 601 atf_set "require.progs" "ksh93 gnop zfsd zpool" 602 atf_set "timeout" 3600 603} 604zfsd_import_001_pos_body() 605{ 606 . $(atf_get_srcdir)/../../include/default.cfg 607 . $(atf_get_srcdir)/../hotspare/hotspare.kshlib 608 . $(atf_get_srcdir)/../hotspare/hotspare.cfg 609 610 verify_disk_count "$DISKS" 5 611 verify_zfsd_running 612 ksh93 $(atf_get_srcdir)/setup.ksh || atf_fail "Setup failed" 613 ksh93 $(atf_get_srcdir)/zfsd_import_001_pos.ksh || atf_fail "Testcase failed" 614 if [[ $? != 0 ]]; then 615 save_artifacts 616 atf_fail "Testcase failed" 617 fi 618} 619zfsd_import_001_pos_cleanup() 620{ 621 . $(atf_get_srcdir)/../../include/default.cfg 622 . $(atf_get_srcdir)/../hotspare/hotspare.kshlib 623 . $(atf_get_srcdir)/../hotspare/hotspare.cfg 624 625 ksh93 $(atf_get_srcdir)/cleanup.ksh || atf_fail "Cleanup failed" 626} 627 628 629 630 631atf_init_test_cases() 632{ 633 atf_add_test_case zfsd_fault_001_pos 634 atf_add_test_case zfsd_degrade_001_pos 635 atf_add_test_case zfsd_degrade_002_pos 636 atf_add_test_case zfsd_hotspare_001_pos 637 atf_add_test_case zfsd_hotspare_002_pos 638 atf_add_test_case zfsd_hotspare_003_pos 639 atf_add_test_case zfsd_hotspare_004_pos 640 atf_add_test_case zfsd_hotspare_005_pos 641 atf_add_test_case zfsd_hotspare_006_pos 642 atf_add_test_case zfsd_hotspare_007_pos 643 atf_add_test_case zfsd_hotspare_008_neg 644 atf_add_test_case zfsd_autoreplace_001_neg 645 atf_add_test_case zfsd_autoreplace_002_pos 646 atf_add_test_case zfsd_autoreplace_003_pos 647 atf_add_test_case zfsd_replace_001_pos 648 atf_add_test_case zfsd_replace_002_pos 649 atf_add_test_case zfsd_replace_003_pos 650 atf_add_test_case zfsd_replace_004_pos 651 atf_add_test_case zfsd_replace_005_pos 652 atf_add_test_case zfsd_import_001_pos 653} 654 655save_artifacts() 656{ 657 # If ARTIFACTS_DIR is defined, save test artifacts for 658 # post-mortem analysis 659 if [[ -n $ARTIFACTS_DIR ]]; then 660 TC_ARTIFACTS_DIR=${ARTIFACTS_DIR}/sys/cddl/zfs/tests/zfsd/$(atf_get ident) 661 mkdir -p $TC_ARTIFACTS_DIR 662 cp -a /var/log/zfsd.log* $TC_ARTIFACTS_DIR 663 bzip2 $TC_ARTIFACTS_DIR/zfsd.log 664 fi 665} 666 667verify_zfsd_running() 668{ 669 service zfsd onestatus || \ 670 atf_skip "zfsd(8) must be enabled and running for this test" 671} 672