Date: Thu, 15 Mar 2018 12:40:43 +0000 (UTC) From: Andriy Gapon <avg@FreeBSD.org> To: src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-head@freebsd.org Subject: svn commit: r330993 - head/tests/sys/cddl/zfs/tests/cli_root/zfs_destroy Message-ID: <201803151240.w2FCehPa055697@repo.freebsd.org>
next in thread | raw e-mail | index | archive | help
Author: avg Date: Thu Mar 15 12:40:43 2018 New Revision: 330993 URL: https://svnweb.freebsd.org/changeset/base/330993 Log: zfs test suite: align zfs_destroy_005_neg: with upstream The change is to account for a different order in which the recursive destroy may be attempted. If we first try a dataset that can be destroyed then it will be destroyed, but if we first try a dataset that cannot be destroyed then we will not attempt to destroy the other dataset. Modified: head/tests/sys/cddl/zfs/tests/cli_root/zfs_destroy/zfs_destroy_005_neg.ksh Modified: head/tests/sys/cddl/zfs/tests/cli_root/zfs_destroy/zfs_destroy_005_neg.ksh ============================================================================== --- head/tests/sys/cddl/zfs/tests/cli_root/zfs_destroy/zfs_destroy_005_neg.ksh Thu Mar 15 12:35:22 2018 (r330992) +++ head/tests/sys/cddl/zfs/tests/cli_root/zfs_destroy/zfs_destroy_005_neg.ksh Thu Mar 15 12:40:43 2018 (r330993) @@ -121,10 +121,30 @@ negative_test "-r -rf" "$CTR $FS $VOL" typeset mtpt_dir=$(get_prop mountpoint $FS) make_dir_busy $mtpt_dir negative_test "-R -rR" $CTR -check_dataset datasetexists $CTR $FS $VOL $VOLSNAP $VOLCLONE -log_must datasetnonexists $FSSNAP $FSCLONE # +# Checking the outcome of the test above is tricky, because the order in +# which datasets are destroyed is not deterministic. Both $FS and $VOL are +# busy, and the remaining datasets will be different depending on whether we +# tried (and failed) to delete $FS or $VOL first. + +# The following datasets will exist independent of the order +check_dataset datasetexists $CTR $FS $VOL + +if datasetexists $VOLSNAP && datasetnonexists $FSSNAP; then + # The recursive destroy failed on $FS + check_dataset datasetnonexists $FSSNAP $FSCLONE + check_dataset datasetexists $VOLSNAP $VOLCLONE +elif datasetexists $FSSNAP && datasetnonexists $VOLSNAP; then + # The recursive destroy failed on $VOL + check_dataset datasetnonexists $VOLSNAP $VOLCLONE + check_dataset datasetexists $FSSNAP $FSCLONE +else + log_must zfs list -rtall + log_fail "Unexpected datasets remaining" +fi + +# # Create the clones for test environment, then verify 'zfs destroy $FS' # failed without '-f'. # @@ -148,7 +168,17 @@ if is_global_zone; then make_dir_busy $TESTDIR1 negative_test "-R -rR" $CTR log_must datasetexists $CTR $VOL - log_must datasetnonexists $FS $FSSNAP $FSCLONE $VOLSNAP $VOLCLONE + log_must datasetnonexists $VOLSNAP $VOLCLONE + + # Here again, the non-determinism of destroy order is a factor. $FS, + # $FSSNAP and $FSCLONE will still exist here iff we attempted to destroy + # $VOL (and failed) first. So check that either all of the datasets are + # present, or they're all gone. + if datasetexists $FS; then + check_dataset datasetexists $FS $FSSNAP $FSCLONE + else + check_dataset datasetnonexists $FS $FSSNAP $FSCLONE + fi # # Create the clones for test environment and make the volume busy.
Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?201803151240.w2FCehPa055697>