aboutsummaryrefslogtreecommitdiffstats
path: root/tests
diff options
context:
space:
mode:
authorTony Hutter <[email protected]>2016-08-15 19:34:02 -0400
committerTony Hutter <[email protected]>2016-10-03 14:51:21 -0700
commit7d75815dc950bdce3fd03cc40a3352d93c270e0f (patch)
treee0393eeead86bf4c8f6b085da71c2e48d1b7929b /tests
parent125a406e24fbfaec29557e88746210b9f18f646c (diff)
Use 100MB pool for filetest_001_pos.ksh checksum test
As part of its tests, filetest_001_pos.ksh wipes the entire vdev to create checksum errors. This patch uses the setup/cleanup scripts from the scrub_mirror test to create a custom 100MB pool, rather than using the entire device size that is passed into zfs-tests.sh (which defaults to 2GB). This speeds up the buildbot tests, and also makes it possible for someone to use real disks (say, 1TB) without the test taking an insanely long amount of time.
Diffstat (limited to 'tests')
-rw-r--r--tests/zfs-tests/tests/functional/checksum/Makefile.am1
-rwxr-xr-xtests/zfs-tests/tests/functional/checksum/cleanup.ksh22
-rw-r--r--tests/zfs-tests/tests/functional/checksum/default.cfg66
-rwxr-xr-xtests/zfs-tests/tests/functional/checksum/filetest_001_pos.ksh2
-rwxr-xr-xtests/zfs-tests/tests/functional/checksum/setup.ksh26
5 files changed, 112 insertions, 5 deletions
diff --git a/tests/zfs-tests/tests/functional/checksum/Makefile.am b/tests/zfs-tests/tests/functional/checksum/Makefile.am
index 2d7d271a0..8132ea1d6 100644
--- a/tests/zfs-tests/tests/functional/checksum/Makefile.am
+++ b/tests/zfs-tests/tests/functional/checksum/Makefile.am
@@ -7,6 +7,7 @@ AUTOMAKE_OPTIONS = subdir-objects
pkgdatadir = $(datadir)/@PACKAGE@/zfs-tests/tests/functional/checksum
dist_pkgdata_SCRIPTS = \
+ default.cfg \
setup.ksh \
cleanup.ksh \
run_edonr_test.ksh \
diff --git a/tests/zfs-tests/tests/functional/checksum/cleanup.ksh b/tests/zfs-tests/tests/functional/checksum/cleanup.ksh
index 79cd6e9f9..da628bcd1 100755
--- a/tests/zfs-tests/tests/functional/checksum/cleanup.ksh
+++ b/tests/zfs-tests/tests/functional/checksum/cleanup.ksh
@@ -25,6 +25,26 @@
# Use is subject to license terms.
#
+#
+# Copyright (c) 2013 by Delphix. All rights reserved.
+#
+
. $STF_SUITE/include/libtest.shlib
+. $STF_SUITE/tests/functional/scrub_mirror/default.cfg
+
+
+verify_runnable "global"
+
+$DF -F zfs -h | $GREP "$TESTFS " >/dev/null
+[[ $? == 0 ]] && log_must $ZFS umount -f $TESTDIR
+destroy_pool $TESTPOOL
+
+# recreate and destroy a zpool over the disks to restore the partitions to
+# normal
+if [[ -n $SINGLE_DISK ]]; then
+ log_must cleanup_devices $MIRROR_PRIMARY
+else
+ log_must cleanup_devices $MIRROR_PRIMARY $MIRROR_SECONDARY
+fi
-default_cleanup
+log_pass
diff --git a/tests/zfs-tests/tests/functional/checksum/default.cfg b/tests/zfs-tests/tests/functional/checksum/default.cfg
new file mode 100644
index 000000000..c173cc1c9
--- /dev/null
+++ b/tests/zfs-tests/tests/functional/checksum/default.cfg
@@ -0,0 +1,66 @@
+#
+# CDDL HEADER START
+#
+# The contents of this file are subject to the terms of the
+# Common Development and Distribution License (the "License").
+# You may not use this file except in compliance with the License.
+#
+# You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE
+# or http://www.opensolaris.org/os/licensing.
+# See the License for the specific language governing permissions
+# and limitations under the License.
+#
+# When distributing Covered Code, include this CDDL HEADER in each
+# file and include the License file at usr/src/OPENSOLARIS.LICENSE.
+# If applicable, add the following below this CDDL HEADER, with the
+# fields enclosed by brackets "[]" replaced with your own identifying
+# information: Portions Copyright [yyyy] [name of copyright owner]
+#
+# CDDL HEADER END
+#
+
+#
+# Copyright 2008 Sun Microsystems, Inc. All rights reserved.
+# Use is subject to license terms.
+#
+
+#
+# Copyright (c) 2013 by Delphix. All rights reserved.
+#
+
+typeset -i NUMBER_OF_DISKS=0
+for i in $DISKS; do
+ [[ -n $MIRROR_PRIMARY ]] && MIRROR_SECONDARY=$i
+ [[ -z $MIRROR_PRIMARY ]] && MIRROR_PRIMARY=$i
+done
+
+if [[ -z $MIRROR_SECONDARY ]]; then
+ # We need to repartition the single disk to two slices
+ SINGLE_DISK=$MIRROR_PRIMARY
+ MIRROR_SECONDARY=$MIRROR_PRIMARY
+ SIDE_PRIMARY_PART=0
+ SIDE_SECONDARY_PART=1
+ if is_linux; then
+ SIDE_PRIMARY=${SINGLE_DISK}p1
+ SIDE_SECONDARY=${SINGLE_DISK}p2
+ else
+ SIDE_PRIMARY=${SINGLE_DISK}s${SIDE_PRIMARY_PART}
+ SIDE_SECONDARY=${SINGLE_DISK}s${SIDE_SECONDARY_PART}
+ fi
+else
+ SIDE_PRIMARY_PART=0
+ SIDE_SECONDARY_PART=0
+ if is_linux; then
+ SIDE_PRIMARY=${MIRROR_PRIMARY}p1
+ SIDE_SECONDARY=${MIRROR_SECONDARY}p1
+ else
+ SIDE_PRIMARY=${MIRROR_PRIMARY}s${SIDE_PRIMARY_PART}
+ SIDE_SECONDARY=${MIRROR_SECONDARY}s${SIDE_SECONDARY_PART}
+ fi
+fi
+
+
+export MIRROR_PRIMARY MIRROR_SECONDARY SINGLE_DISK SIDE_PRIMARY SIDE_SECONDARY
+
+export MIRROR_MEGS=100
+export MIRROR_SIZE=${MIRROR_MEGS}m # default mirror size
diff --git a/tests/zfs-tests/tests/functional/checksum/filetest_001_pos.ksh b/tests/zfs-tests/tests/functional/checksum/filetest_001_pos.ksh
index 758b353c9..a360dfd36 100755
--- a/tests/zfs-tests/tests/functional/checksum/filetest_001_pos.ksh
+++ b/tests/zfs-tests/tests/functional/checksum/filetest_001_pos.ksh
@@ -89,7 +89,7 @@ while is_pool_scrubbing $TESTPOOL; do
$SLEEP 1
done
$ZPOOL status -P -v $TESTPOOL | grep $firstvdev | read -r name state rd wr cksum
-log_assert "Normal file write test saw: $cksum errors"
+log_assert "Normal file write test saw $cksum checksum errors"
log_must [ $cksum -eq 0 ]
rm -fr $TESTDIR/*
diff --git a/tests/zfs-tests/tests/functional/checksum/setup.ksh b/tests/zfs-tests/tests/functional/checksum/setup.ksh
index 27e125df4..dba4883f1 100755
--- a/tests/zfs-tests/tests/functional/checksum/setup.ksh
+++ b/tests/zfs-tests/tests/functional/checksum/setup.ksh
@@ -21,11 +21,31 @@
#
#
-# Copyright 2007 Sun Microsystems, Inc. All rights reserved.
+# Copyright 2009 Sun Microsystems, Inc. All rights reserved.
# Use is subject to license terms.
#
+#
+# Copyright (c) 2013 by Delphix. All rights reserved.
+#
+
. $STF_SUITE/include/libtest.shlib
+. $STF_SUITE/tests/functional/checksum/default.cfg
+
+verify_runnable "global"
+
+if ! $(is_physical_device $DISKS) ; then
+ log_unsupported "This directory cannot be run on raw files."
+fi
+
+if [[ -n $SINGLE_DISK ]]; then
+ log_note "Partitioning a single disk ($SINGLE_DISK)"
+else
+ log_note "Partitioning disks ($MIRROR_PRIMARY $MIRROR_SECONDARY)"
+fi
+log_must set_partition $SIDE_PRIMARY_PART "" $MIRROR_SIZE $MIRROR_PRIMARY
+log_must set_partition $SIDE_SECONDARY_PART "" $MIRROR_SIZE $MIRROR_SECONDARY
+
+default_mirror_setup $SIDE_PRIMARY $SIDE_SECONDARY
-DISK=${DISKS%% *}
-default_mirror_setup $DISKS
+log_pass