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