svn commit: r277630 - in projects/zfsd/head/tests/sys: . cddl/zfs/include cddl/zfs/tests/cli_root/zfs_destroy cddl/zfs/tests/cli_root/zpool_import cddl/zfs/tests/cli_root/zpool_upgrade cddl/zfs/tes...
Will Andrews
will at FreeBSD.org
Sat Jan 24 01:20:24 UTC 2015
Author: will
Date: Sat Jan 24 01:20:15 2015
New Revision: 277630
URL: https://svnweb.freebsd.org/changeset/base/277630
Log:
Update the ZFS test suite for changes/bugfixes since the last round.
Pull in additional tests for FIBs, GEOM, DTrace, and unix_seqpacket. These
will be pushed up to head separately from here, but are easier to manage in
one place.
Submitted by: asomers, gibbs, will
Sponsored by: Spectra Logic
Added:
projects/zfsd/head/tests/sys/cddl/zfs/tests/cli_root/zpool_upgrade/blockfiles/zfs-pool-v28.dat.Z (contents, props changed)
projects/zfsd/head/tests/sys/cddl/zfs/tests/cli_root/zpool_upgrade/blockfiles/zfs-pool-v5000.dat.Z (contents, props changed)
projects/zfsd/head/tests/sys/cddl/zfs/tests/cli_root/zpool_upgrade/create_upgrade_pool_dat.sh (contents, props changed)
projects/zfsd/head/tests/sys/dtrace/
projects/zfsd/head/tests/sys/dtrace/Makefile
projects/zfsd/head/tests/sys/dtrace/fasttrap.sh
projects/zfsd/head/tests/sys/geom/
projects/zfsd/head/tests/sys/geom/Makefile
projects/zfsd/head/tests/sys/geom/geom_part/
projects/zfsd/head/tests/sys/geom/geom_part/Makefile
projects/zfsd/head/tests/sys/geom/geom_part/geom_part_test.sh (contents, props changed)
projects/zfsd/head/tests/sys/netinet/fibs.sh
Deleted:
projects/zfsd/head/tests/sys/cddl/zfs/tests/cli_root/zpool_import/zpool_import_001_pos.ksh
Modified:
projects/zfsd/head/tests/sys/Makefile
projects/zfsd/head/tests/sys/cddl/zfs/include/commands.txt
projects/zfsd/head/tests/sys/cddl/zfs/include/libtest.kshlib
projects/zfsd/head/tests/sys/cddl/zfs/tests/cli_root/zfs_destroy/zfs_destroy_test.sh
projects/zfsd/head/tests/sys/cddl/zfs/tests/cli_root/zpool_import/Makefile
projects/zfsd/head/tests/sys/cddl/zfs/tests/cli_root/zpool_import/setup.ksh
projects/zfsd/head/tests/sys/cddl/zfs/tests/cli_root/zpool_import/zpool_import_002_pos.ksh
projects/zfsd/head/tests/sys/cddl/zfs/tests/cli_root/zpool_import/zpool_import_test.sh
projects/zfsd/head/tests/sys/cddl/zfs/tests/cli_root/zpool_upgrade/blockfiles/Makefile
projects/zfsd/head/tests/sys/cddl/zfs/tests/cli_root/zpool_upgrade/cleanup.ksh
projects/zfsd/head/tests/sys/cddl/zfs/tests/cli_root/zpool_upgrade/setup.ksh
projects/zfsd/head/tests/sys/cddl/zfs/tests/cli_root/zpool_upgrade/zpool_upgrade.cfg
projects/zfsd/head/tests/sys/cddl/zfs/tests/cli_root/zpool_upgrade/zpool_upgrade.kshlib
projects/zfsd/head/tests/sys/cddl/zfs/tests/cli_root/zpool_upgrade/zpool_upgrade_001_pos.ksh
projects/zfsd/head/tests/sys/cddl/zfs/tests/cli_root/zpool_upgrade/zpool_upgrade_008_pos.ksh
projects/zfsd/head/tests/sys/cddl/zfs/tests/cli_root/zpool_upgrade/zpool_upgrade_test.sh
projects/zfsd/head/tests/sys/cddl/zfs/tests/history/history_001_pos.ksh
projects/zfsd/head/tests/sys/cddl/zfs/tests/history/history_003_pos.ksh
projects/zfsd/head/tests/sys/cddl/zfs/tests/history/history_test.sh
projects/zfsd/head/tests/sys/cddl/zfs/tests/hotspare/hotspare_replace_003_neg.ksh
projects/zfsd/head/tests/sys/cddl/zfs/tests/snapshot/snapshot_test.sh
projects/zfsd/head/tests/sys/cddl/zfs/tests/zfsd/zfsd_fault_001_pos.ksh
projects/zfsd/head/tests/sys/cddl/zfs/tests/zil/zil.kshlib
projects/zfsd/head/tests/sys/kern/Makefile
projects/zfsd/head/tests/sys/kern/unix_seqpacket_test.c
projects/zfsd/head/tests/sys/netinet/Makefile
projects/zfsd/head/tests/sys/netinet/fibs_test.sh
Modified: projects/zfsd/head/tests/sys/Makefile
==============================================================================
--- projects/zfsd/head/tests/sys/Makefile Sat Jan 24 00:43:02 2015 (r277629)
+++ projects/zfsd/head/tests/sys/Makefile Sat Jan 24 01:20:15 2015 (r277630)
@@ -2,13 +2,16 @@
.include <bsd.own.mk>
-.PATH: ${.CURDIR}/..
+TESTSDIR= ${TESTSBASE}/sys
TESTS_SUBDIRS+= cddl
+TESTS_SUBDIRS+= devad
+TESTS_SUBDIRS+= devad2
+TESTS_SUBDIRS+= dtrace
+TESTS_SUBDIRS+= geom
TESTS_SUBDIRS+= kern
+TESTS_SUBDIRS+= net
TESTS_SUBDIRS+= netinet
-TESTSDIR= ${TESTSBASE}/sys
-
-KYUAFILE= yes
+TESTS_SUBDIRS+= sys
.include <bsd.test.mk>
Modified: projects/zfsd/head/tests/sys/cddl/zfs/include/commands.txt
==============================================================================
--- projects/zfsd/head/tests/sys/cddl/zfs/include/commands.txt Sat Jan 24 00:43:02 2015 (r277629)
+++ projects/zfsd/head/tests/sys/cddl/zfs/include/commands.txt Sat Jan 24 01:20:15 2015 (r277630)
@@ -75,6 +75,7 @@
/sbin/fsck
/sbin/fsdb
/sbin/fsirand
+/usr/bin/fsync
#%%STFSUITEDIR%%/bin/fstyp
/usr/bin/id
#/usr/bin/isainfo
Modified: projects/zfsd/head/tests/sys/cddl/zfs/include/libtest.kshlib
==============================================================================
--- projects/zfsd/head/tests/sys/cddl/zfs/include/libtest.kshlib Sat Jan 24 00:43:02 2015 (r277629)
+++ projects/zfsd/head/tests/sys/cddl/zfs/include/libtest.kshlib Sat Jan 24 01:20:15 2015 (r277630)
@@ -2251,6 +2251,7 @@ function get_config
{
typeset pool=$1
typeset config=$2
+ typeset vdevdir=$3
typeset alt_root
typeset zdb_opts
@@ -2280,6 +2281,7 @@ function get_config
else
# use -e for exported pools
zdb_opts="-eC"
+ [[ -n "$vdevdir" ]] && zdb_opts="$zdb_opts -p $vdevdir"
fi
value=$($ZDB $zdb_opts $pool | $GREP "$config:" | $AWK -F: '{print $2}')
Modified: projects/zfsd/head/tests/sys/cddl/zfs/tests/cli_root/zfs_destroy/zfs_destroy_test.sh
==============================================================================
--- projects/zfsd/head/tests/sys/cddl/zfs/tests/cli_root/zfs_destroy/zfs_destroy_test.sh Sat Jan 24 00:43:02 2015 (r277629)
+++ projects/zfsd/head/tests/sys/cddl/zfs/tests/cli_root/zfs_destroy/zfs_destroy_test.sh Sat Jan 24 01:20:15 2015 (r277630)
@@ -139,7 +139,6 @@ zfs_destroy_004_pos_cleanup()
atf_test_case zfs_destroy_005_neg cleanup
zfs_destroy_005_neg_head()
{
- atf_expect_fail "DE186: zfs destroy ignores absence of -f for snapshots"
atf_set "descr" "Seperately verify 'zfs destroy -f|-r|-rf|-R|-rR <dataset>' willfail in different conditions."
atf_set "require.progs" zfs
atf_set "timeout" 3600
Modified: projects/zfsd/head/tests/sys/cddl/zfs/tests/cli_root/zpool_import/Makefile
==============================================================================
--- projects/zfsd/head/tests/sys/cddl/zfs/tests/cli_root/zpool_import/Makefile Sat Jan 24 00:43:02 2015 (r277629)
+++ projects/zfsd/head/tests/sys/cddl/zfs/tests/cli_root/zpool_import/Makefile Sat Jan 24 01:20:15 2015 (r277630)
@@ -26,7 +26,6 @@ FILES+= cleanup.ksh
FILES+= zpool_import_011_neg.ksh
FILES+= zpool_import_missing_004_pos.ksh
FILES+= zpool_import_005_pos.ksh
-FILES+= zpool_import_001_pos.ksh
FILES+= zpool_import_009_neg.ksh
FILES+= zpool_import_missing_001_pos.ksh
FILES+= zpool_import_008_pos.ksh
Modified: projects/zfsd/head/tests/sys/cddl/zfs/tests/cli_root/zpool_import/setup.ksh
==============================================================================
--- projects/zfsd/head/tests/sys/cddl/zfs/tests/cli_root/zpool_import/setup.ksh Sat Jan 24 00:43:02 2015 (r277629)
+++ projects/zfsd/head/tests/sys/cddl/zfs/tests/cli_root/zpool_import/setup.ksh Sat Jan 24 01:20:15 2015 (r277630)
@@ -53,7 +53,14 @@ fi
log_must $ZFS create $TESTPOOL/$TESTFS
log_must $ZFS set mountpoint=$TESTDIR $TESTPOOL/$TESTFS
-$ECHO "y" | $NEWFS $ZFSSIDE_DISK2 >/dev/null 2>&1
+# Limit the filesystem size to 32GiB; this should be sufficient.
+(( MAXSECTS = 32 * 1024 * 1024 ))
+NUMSECTS=`diskinfo ${ZFSSIDE_DISK2} | awk '{print $4}'`
+if [[ $NUMSECTS -gt $MAXSECTS ]]; then
+ NUMSECTS=$MAXSECTS
+fi
+
+$ECHO "y" | $NEWFS -s $NUMSECTS $ZFSSIDE_DISK2 >/dev/null 2>&1
(( $? != 0 )) &&
log_untested "Unable to setup a UFS file system"
Modified: projects/zfsd/head/tests/sys/cddl/zfs/tests/cli_root/zpool_import/zpool_import_002_pos.ksh
==============================================================================
--- projects/zfsd/head/tests/sys/cddl/zfs/tests/cli_root/zpool_import/zpool_import_002_pos.ksh Sat Jan 24 00:43:02 2015 (r277629)
+++ projects/zfsd/head/tests/sys/cddl/zfs/tests/cli_root/zpool_import/zpool_import_002_pos.ksh Sat Jan 24 01:20:15 2015 (r277630)
@@ -107,40 +107,47 @@ typeset -i j=0
typeset basedir
while (( i < ${#pools[*]} )); do
- guid=$(get_config ${pools[i]} pool_guid)
-
log_must $CP $MYTESTFILE ${mtpts[i]}/$TESTFILE0
log_must $ZFS umount ${mtpts[i]}
j=0
while (( j < ${#options[*]} )); do
- log_must $ZPOOL export ${pools[i]}
-
- typeset target=${pools[i]}
- if (( RANDOM % 2 == 0 )) ; then
- target=$guid
- log_note "Import by guid."
- fi
-
- log_must $ZPOOL import ${devs[i]} ${options[j]} $target
-
- log_must poolexists ${pools[i]}
-
- log_must ismounted ${pools[i]}/$TESTFS
-
- basedir=${mtpts[i]}
- [[ -n ${options[j]} ]] && \
- basedir=$ALTER_ROOT/${mtpts[i]}
-
- [[ ! -e $basedir/$TESTFILE0 ]] && \
- log_fail "$basedir/$TESTFILE0 missing after import."
+ typeset pool=${pools[i]}
+ k=0
+ while (( k < 2 )); do
+ typeset target=$pool
+ log_must $ZPOOL export $pool
+
+ if (( k == 1 )); then
+ typeset vdevdir=""
+ if [[ "$pool" = "$TESTPOOL1" ]]; then
+ vdevdir="$DEVICE_DIR"
+ fi
+ target=$(get_config $pool pool_guid $vdevdir)
+ log_must test -n "$target"
+ log_note "Importing '$pool' by guid '$target'."
+ fi
+
+ log_must $ZPOOL import ${devs[i]} ${options[j]} $target
+ log_must poolexists $pool
+ log_must ismounted $pool/$TESTFS
+
+ basedir=${mtpts[i]}
+ [[ -n ${options[j]} ]] && \
+ basedir=$ALTER_ROOT/${mtpts[i]}
+
+ [[ ! -e $basedir/$TESTFILE0 ]] && log_fail \
+ "$basedir/$TESTFILE0 missing after import."
+
+ checksum2=$($SUM $basedir/$TESTFILE0 | $AWK '{print $1}')
+ [[ "$checksum1" != "$checksum2" ]] && log_fail \
+ "Checksums differ ($checksum1 != $checksum2)"
- checksum2=$($SUM $basedir/$TESTFILE0 | $AWK '{print $1}')
- [[ "$checksum1" != "$checksum2" ]] && \
- log_fail "Checksums differ ($checksum1 != $checksum2)"
+ log_mustnot $ZPOOL import ${devs[i]} $target
- log_mustnot $ZPOOL import ${devs[i]} $target
+ (( k = k + 1 ))
+ done
((j = j + 1))
done
@@ -149,4 +156,4 @@ while (( i < ${#pools[*]} )); do
done
-log_pass "Unable to import the same pool twice as expected."
+log_pass "Able to import exported pools and import only once."
Modified: projects/zfsd/head/tests/sys/cddl/zfs/tests/cli_root/zpool_import/zpool_import_test.sh
==============================================================================
--- projects/zfsd/head/tests/sys/cddl/zfs/tests/cli_root/zpool_import/zpool_import_test.sh Sat Jan 24 00:43:02 2015 (r277629)
+++ projects/zfsd/head/tests/sys/cddl/zfs/tests/cli_root/zpool_import/zpool_import_test.sh Sat Jan 24 01:20:15 2015 (r277630)
@@ -24,38 +24,10 @@
#
-atf_test_case zpool_import_001_pos cleanup
-zpool_import_001_pos_head()
-{
- atf_set "descr" "Verify that an exported pool can be imported."
- atf_set "require.config" rt_medium
- atf_set "require.config" at_least_2_disks
- atf_set "require.progs" zfs zpool sum mkfile zdb
- atf_set "timeout" 2400
-}
-zpool_import_001_pos_body()
-{
- export TESTCASE_ID=$(echo $(atf_get ident) | cksum -o 2 | cut -f 1 -d " ")
- . $(atf_get_srcdir)/../../../include/default.cfg
- . $(atf_get_srcdir)/zpool_import.cfg
-
- ksh93 $(atf_get_srcdir)/setup.ksh || atf_fail "Setup failed"
- ksh93 $(atf_get_srcdir)/zpool_import_001_pos.ksh || atf_fail "Testcase failed"
-}
-zpool_import_001_pos_cleanup()
-{
- export TESTCASE_ID=$(echo $(atf_get ident) | cksum -o 2 | cut -f 1 -d " ")
- . $(atf_get_srcdir)/../../../include/default.cfg
- . $(atf_get_srcdir)/zpool_import.cfg
-
- ksh93 $(atf_get_srcdir)/cleanup.ksh || atf_fail "Cleanup failed"
-}
-
-
atf_test_case zpool_import_002_pos cleanup
zpool_import_002_pos_head()
{
- atf_set "descr" "Verify that an exported pool cannot be imported more than once."
+ atf_set "descr" "Verify that an exported pool can be imported and cannot be imported more than once."
atf_set "require.config" rt_medium
atf_set "require.config" at_least_2_disks
atf_set "require.progs" zfs zpool sum mkfile zdb
@@ -537,7 +509,6 @@ zpool_import_missing_004_pos_head()
}
zpool_import_missing_004_pos_body()
{
- atf_expect_fail 'BUG27046: nvlist_lookup_nvlist(nvl, name, &rv) == 0 (0x2 == 0x0) during "zpool import"'
export TESTCASE_ID=$(echo $(atf_get ident) | cksum -o 2 | cut -f 1 -d " ")
. $(atf_get_srcdir)/../../../include/default.cfg
. $(atf_get_srcdir)/zpool_import.cfg
@@ -603,7 +574,6 @@ zpool_import_corrupt_001_pos_cleanup()
atf_init_test_cases()
{
- atf_add_test_case zpool_import_001_pos
atf_add_test_case zpool_import_002_pos
atf_add_test_case zpool_import_003_pos
atf_add_test_case zpool_import_004_pos
Modified: projects/zfsd/head/tests/sys/cddl/zfs/tests/cli_root/zpool_upgrade/blockfiles/Makefile
==============================================================================
--- projects/zfsd/head/tests/sys/cddl/zfs/tests/cli_root/zpool_upgrade/blockfiles/Makefile Sat Jan 24 00:43:02 2015 (r277629)
+++ projects/zfsd/head/tests/sys/cddl/zfs/tests/cli_root/zpool_upgrade/blockfiles/Makefile Sat Jan 24 01:20:15 2015 (r277630)
@@ -5,58 +5,60 @@
TESTSDIR=${TESTSBASE}/sys/cddl/zfs/tests/cli_root/zpool_upgrade/blockfiles
FILESDIR=${TESTSDIR}
-FILES+= zfs-pool-v3stripe2.dat.Z
-FILES+= zfs-pool-v2raidz1.dat.Z
FILES+= README
-FILES+= zfs-pool-v2stripe2.dat.Z
-FILES+= zfs-pool-v1mirror2.dat.Z
-FILES+= zfs-pool-v3mirror2.dat.Z
-FILES+= zfs-pool-v7.dat.Z
-FILES+= zfs-pool-v13.dat.Z
-FILES+= zfs-pool-vBROKEN.dat.Z
+FILES+= zfs-broken-mirror1.dat.Z
FILES+= zfs-broken-mirror2.dat.Z
-FILES+= zfs-pool-v2mirror2.dat.Z
-FILES+= zfs-pool-v1stripe2.dat.Z
-FILES+= zfs-pool-v3stripe3.dat.Z
-FILES+= zfs-pool-v1mirror3.dat.Z
-FILES+= zfs-pool-v2stripe3.dat.Z
-FILES+= zfs-pool-v6.dat.Z
-FILES+= zfs-pool-v3mirror3.dat.Z
+FILES+= zfs-pool-v1.dat.Z
+FILES+= zfs-pool-v10.dat.Z
+FILES+= zfs-pool-v11.dat.Z
FILES+= zfs-pool-v12.dat.Z
+FILES+= zfs-pool-v13.dat.Z
+FILES+= zfs-pool-v14.dat.Z
+FILES+= zfs-pool-v15.dat.Z
+FILES+= zfs-pool-v1mirror1.dat.Z
+FILES+= zfs-pool-v1mirror2.dat.Z
+FILES+= zfs-pool-v1mirror3.dat.Z
+FILES+= zfs-pool-v1raidz1.dat.Z
+FILES+= zfs-pool-v1raidz2.dat.Z
+FILES+= zfs-pool-v1raidz3.dat.Z
+FILES+= zfs-pool-v1stripe1.dat.Z
+FILES+= zfs-pool-v1stripe2.dat.Z
FILES+= zfs-pool-v1stripe3.dat.Z
+FILES+= zfs-pool-v2.dat.Z
+FILES+= zfs-pool-v28.dat.Z
+FILES+= zfs-pool-v2mirror1.dat.Z
+FILES+= zfs-pool-v2mirror2.dat.Z
FILES+= zfs-pool-v2mirror3.dat.Z
-FILES+= zfs-pool-v2raidz3.dat.Z
-FILES+= zfs-pool-v11.dat.Z
-FILES+= zfs-pool-v5.dat.Z
-FILES+= zfs-pool-v9.dat.Z
+FILES+= zfs-pool-v2raidz1.dat.Z
FILES+= zfs-pool-v2raidz2.dat.Z
-FILES+= zfs-pool-v3stripe1.dat.Z
-FILES+= zfs-pool-v1mirror1.dat.Z
+FILES+= zfs-pool-v2raidz3.dat.Z
FILES+= zfs-pool-v2stripe1.dat.Z
-FILES+= zfs-pool-v10.dat.Z
-FILES+= zfs-pool-v3mirror1.dat.Z
-FILES+= zfs-pool-v4.dat.Z
-FILES+= zfs-pool-v1stripe1.dat.Z
-FILES+= zfs-pool-v8.dat.Z
-FILES+= zfs-pool-v2mirror1.dat.Z
-FILES+= zfs-broken-mirror1.dat.Z
-FILES+= zfs-pool-v1raidz2.dat.Z
-FILES+= zfs-pool-v3raidz21.dat.Z
-FILES+= zfs-pool-v3hotspare3.dat.Z
+FILES+= zfs-pool-v2stripe2.dat.Z
+FILES+= zfs-pool-v2stripe3.dat.Z
FILES+= zfs-pool-v3.dat.Z
-FILES+= zfs-pool-v3raidz3.dat.Z
-FILES+= zfs-pool-v1raidz3.dat.Z
-FILES+= zfs-pool-v2.dat.Z
+FILES+= zfs-pool-v3hotspare1.dat.Z
FILES+= zfs-pool-v3hotspare2.dat.Z
-FILES+= zfs-pool-v3raidz2.dat.Z
-FILES+= zfs-pool-v999.dat.Z
-FILES+= zfs-pool-v3raidz23.dat.Z
+FILES+= zfs-pool-v3hotspare3.dat.Z
+FILES+= zfs-pool-v3mirror1.dat.Z
+FILES+= zfs-pool-v3mirror2.dat.Z
+FILES+= zfs-pool-v3mirror3.dat.Z
FILES+= zfs-pool-v3raidz1.dat.Z
-FILES+= zfs-pool-v3hotspare1.dat.Z
-FILES+= zfs-pool-v1.dat.Z
-FILES+= zfs-pool-v15.dat.Z
+FILES+= zfs-pool-v3raidz2.dat.Z
+FILES+= zfs-pool-v3raidz21.dat.Z
FILES+= zfs-pool-v3raidz22.dat.Z
-FILES+= zfs-pool-v1raidz1.dat.Z
-FILES+= zfs-pool-v14.dat.Z
+FILES+= zfs-pool-v3raidz23.dat.Z
+FILES+= zfs-pool-v3raidz3.dat.Z
+FILES+= zfs-pool-v3stripe1.dat.Z
+FILES+= zfs-pool-v3stripe2.dat.Z
+FILES+= zfs-pool-v3stripe3.dat.Z
+FILES+= zfs-pool-v4.dat.Z
+FILES+= zfs-pool-v5.dat.Z
+FILES+= zfs-pool-v5000.dat.Z
+FILES+= zfs-pool-v6.dat.Z
+FILES+= zfs-pool-v7.dat.Z
+FILES+= zfs-pool-v8.dat.Z
+FILES+= zfs-pool-v9.dat.Z
+FILES+= zfs-pool-v999.dat.Z
+FILES+= zfs-pool-vBROKEN.dat.Z
.include <bsd.test.mk>
Added: projects/zfsd/head/tests/sys/cddl/zfs/tests/cli_root/zpool_upgrade/blockfiles/zfs-pool-v28.dat.Z
==============================================================================
Binary file. No diff available.
Added: projects/zfsd/head/tests/sys/cddl/zfs/tests/cli_root/zpool_upgrade/blockfiles/zfs-pool-v5000.dat.Z
==============================================================================
Binary file. No diff available.
Modified: projects/zfsd/head/tests/sys/cddl/zfs/tests/cli_root/zpool_upgrade/cleanup.ksh
==============================================================================
--- projects/zfsd/head/tests/sys/cddl/zfs/tests/cli_root/zpool_upgrade/cleanup.ksh Sat Jan 24 00:43:02 2015 (r277629)
+++ projects/zfsd/head/tests/sys/cddl/zfs/tests/cli_root/zpool_upgrade/cleanup.ksh Sat Jan 24 01:20:15 2015 (r277630)
@@ -51,5 +51,3 @@ for config in $CONFIGS
do
destroy_upgraded_pool $config
done
-
-default_cleanup
Added: projects/zfsd/head/tests/sys/cddl/zfs/tests/cli_root/zpool_upgrade/create_upgrade_pool_dat.sh
==============================================================================
--- /dev/null 00:00:00 1970 (empty, because file is newly added)
+++ projects/zfsd/head/tests/sys/cddl/zfs/tests/cli_root/zpool_upgrade/create_upgrade_pool_dat.sh Sat Jan 24 01:20:15 2015 (r277630)
@@ -0,0 +1,40 @@
+#!/bin/sh
+
+scriptpath=$(realpath $0)
+parent=$(dirname $scriptpath)
+blockfiles=${parent}/blockfiles
+
+version=$1
+if [ -z "$version" ]; then
+ echo "Must specify ZFS pool version"
+ exit 1
+fi
+
+# In case we need to test feature enabling?
+#avail_features=$(zpool upgrade -v | awk '/^[a-z]/ && !/^see the/ { print $1 }')
+
+zpool_opts=""
+# For v5000, the rest of the arguments are <feature>=<enabled|disabled>.
+if [ "$version" = "5000" ]; then
+ shift
+ for feature in $*; do
+ zpool_opts="$zpool_opts -o feature@${feature}"
+ done
+else
+ zpool_opts="-o version=${version}"
+fi
+
+dir=$(pwd)
+datfile=zfs-pool-v${version}.dat
+dat=${dir}/${datfile}
+poolname=v${version}-pool
+
+rm -f ${dat} ${dat}.Z
+set -e
+set -x
+dd if=/dev/zero of=${dat} bs=1M count=64
+zpool create ${zpool_opts} ${poolname} ${dat}
+zpool export ${poolname}
+compress ${dat}
+cp ${dat}.Z ${blockfiles}
+ls -l ${blockfiles}/${datfile}.Z
Modified: projects/zfsd/head/tests/sys/cddl/zfs/tests/cli_root/zpool_upgrade/setup.ksh
==============================================================================
--- projects/zfsd/head/tests/sys/cddl/zfs/tests/cli_root/zpool_upgrade/setup.ksh Sat Jan 24 00:43:02 2015 (r277629)
+++ projects/zfsd/head/tests/sys/cddl/zfs/tests/cli_root/zpool_upgrade/setup.ksh Sat Jan 24 01:20:15 2015 (r277630)
@@ -31,10 +31,6 @@
. $STF_SUITE/include/libtest.kshlib
verify_runnable "global"
-verify_disk_count "$DISKS" 2
-
-# give us a pool to play in
-default_mirror_setup $DISKS
# This should have been set by the .cfg script - verify it's set to something
# (we check that something later on)
Modified: projects/zfsd/head/tests/sys/cddl/zfs/tests/cli_root/zpool_upgrade/zpool_upgrade.cfg
==============================================================================
--- projects/zfsd/head/tests/sys/cddl/zfs/tests/cli_root/zpool_upgrade/zpool_upgrade.cfg Sat Jan 24 00:43:02 2015 (r277629)
+++ projects/zfsd/head/tests/sys/cddl/zfs/tests/cli_root/zpool_upgrade/zpool_upgrade.cfg Sat Jan 24 01:20:15 2015 (r277630)
@@ -149,6 +149,14 @@ export ZPOOL_VERSION_14_NAME="v14-pool"
export ZPOOL_VERSION_15_FILES="zfs-pool-v15.dat"
export ZPOOL_VERSION_15_NAME="v15-pool"
+# v28 pool
+export ZPOOL_VERSION_28_FILES="zfs-pool-v28.dat"
+export ZPOOL_VERSION_28_NAME="v28-pool"
+
+# v5000 pool
+export ZPOOL_VERSION_5000_FILES="zfs-pool-v5000.dat"
+export ZPOOL_VERSION_5000_NAME="v5000-pool"
+
# This pool is a v2 pool, with device problems on one side of the mirror
# so that the pool appears as DEGRADED
export ZPOOL_VERSION_2brokenmirror_FILES="zfs-broken-mirror1.dat \
@@ -256,12 +264,24 @@ case $ZPOOL_VERSION in
2 2stripe 2raidz 2mirror 2brokenmirror \
3 3stripe 3raidz 3mirror 3dblraidz 3hotspare 4 5 6 7 8 9 10 11 12 13 14 15"
;;
+28)
+ # we should be able to upgrade pools up to version 15
+ CONFIGS="1 1stripe 1raidz 1mirror \
+ 2 2stripe 2raidz 2mirror 2brokenmirror \
+ 3 3stripe 3raidz 3mirror 3dblraidz 3hotspare 4 5 6 7 8 9 10 11 12 13 14 15 28"
+ ;;
+5000)
+ # we should be able to upgrade pools up to version 15
+ CONFIGS="1 1stripe 1raidz 1mirror \
+ 2 2stripe 2raidz 2mirror 2brokenmirror \
+ 3 3stripe 3raidz 3mirror 3dblraidz 3hotspare 4 5 6 7 8 9 10 11 12 13 14 15 28 5000"
+ ;;
*)
- # we should be able to upgrade pools up to version 10
+ # we should be able to upgrade pools up to version 15
# but we should also log a note about the unknown pool version
CONFIGS="1 1stripe 1raidz 1mirror \
2 2stripe 2raidz 2mirror 2brokenmirror \
- 3 3stripe 3raidz 3mirror 3dblraidz 3hotspare 4 5 6 7 8 9 10"
+ 3 3stripe 3raidz 3mirror 3dblraidz 3hotspare 4 5 6 7 8 9 10 11 12 13 14 15"
log_note "Unknown ZFS version $ZPOOL_VERSION encountered:\
Test suite may need updating."
Modified: projects/zfsd/head/tests/sys/cddl/zfs/tests/cli_root/zpool_upgrade/zpool_upgrade.kshlib
==============================================================================
--- projects/zfsd/head/tests/sys/cddl/zfs/tests/cli_root/zpool_upgrade/zpool_upgrade.kshlib Sat Jan 24 00:43:02 2015 (r277629)
+++ projects/zfsd/head/tests/sys/cddl/zfs/tests/cli_root/zpool_upgrade/zpool_upgrade.kshlib Sat Jan 24 01:20:15 2015 (r277630)
@@ -54,7 +54,7 @@ function create_old_pool
# Now put some random contents into the pool.
COUNT=0
- while [ $COUNT -lt 1024 ]; do
+ while [ "$COUNT" -lt 1024 ]; do
$DD if=/dev/urandom of=/$POOL_NAME/random.$COUNT \
count=1 bs=1024 > /dev/null 2>&1
COUNT=$(( $COUNT + 1 ))
@@ -92,11 +92,11 @@ function destroy_upgraded_pool {
| $AWK -F= '{print $2}')
POOL_FILES=$($ENV | grep "ZPOOL_VERSION_${VERSION}_FILES"\
| $AWK -F= '{print $2}')
- if poolexists $POOL_NAME; then
+ if poolexists "$POOL_NAME"; then
log_must $ZPOOL destroy $POOL_NAME
fi
for file in $POOL_FILES; do
- if [ -e $TMPDIR/$file ]; then
+ if [ -e "$TMPDIR/$file" ]; then
$RM $TMPDIR/$file
fi
done
@@ -126,10 +126,10 @@ function check_poolversion { # pool vers
VERSION=$2
# check version using zdb
- ACTUAL=$($ZDB -C $POOL | $GREP version= | \
- $SED -e 's/ //g' -e 's/version=//g')
+ ACTUAL=$($ZDB -eC -p $TMPDIR $POOL | $GREP version: | \
+ $SED -e 's/ //g' -e 's/version://g')
- if [ $ACTUAL != $VERSION ]
+ if [ "$ACTUAL" != "$VERSION" ]
then
log_fail "$POOL not upgraded, ver. $ACTUAL, expected $VERSION"
fi
@@ -137,7 +137,7 @@ function check_poolversion { # pool vers
# check version using zpool upgrade
ACTUAL=$($ZPOOL upgrade | $GREP $POOL$ | \
$AWK '{print $1}' | $SED -e 's/ //g')
- if [ $ACTUAL != $VERSION ]
+ if [ "$ACTUAL" != "$VERSION" ]
then
log_fail "$POOL reported version $ACTUAL, expected $VERSION"
fi
@@ -155,7 +155,7 @@ function random { # min max
typeset MAX=$2
typeset RAND=0
- while [ $RAND -lt $MIN ]
+ while [ "$RAND" -lt "$MIN" ]
do
RAND=$(( $RANDOM % $MAX + 1))
done
Modified: projects/zfsd/head/tests/sys/cddl/zfs/tests/cli_root/zpool_upgrade/zpool_upgrade_001_pos.ksh
==============================================================================
--- projects/zfsd/head/tests/sys/cddl/zfs/tests/cli_root/zpool_upgrade/zpool_upgrade_001_pos.ksh Sat Jan 24 00:43:02 2015 (r277629)
+++ projects/zfsd/head/tests/sys/cddl/zfs/tests/cli_root/zpool_upgrade/zpool_upgrade_001_pos.ksh Sat Jan 24 01:20:15 2015 (r277630)
@@ -76,6 +76,9 @@ $TAIL -${COUNT} $TMPDIR/zpool-versions.$
log_note "Checking to see we have a description for the current ZFS version."
if (( ZPOOL_VERSION < 10 )); then
log_must $GREP "$ZPOOL_VERSION " $TMPDIR/zpool-versions-desc.${TESTCASE_ID}
+elif (( ZPOOL_VERSION >= 5000 )); then
+ log_must $GREP "The following features are supported" \
+ $TMPDIR/zpool-versions-desc.${TESTCASE_ID}
else
log_must $GREP "$ZPOOL_VERSION " $TMPDIR/zpool-versions-desc.${TESTCASE_ID}
fi
Modified: projects/zfsd/head/tests/sys/cddl/zfs/tests/cli_root/zpool_upgrade/zpool_upgrade_008_pos.ksh
==============================================================================
--- projects/zfsd/head/tests/sys/cddl/zfs/tests/cli_root/zpool_upgrade/zpool_upgrade_008_pos.ksh Sat Jan 24 00:43:02 2015 (r277629)
+++ projects/zfsd/head/tests/sys/cddl/zfs/tests/cli_root/zpool_upgrade/zpool_upgrade_008_pos.ksh Sat Jan 24 01:20:15 2015 (r277630)
@@ -79,14 +79,8 @@ log_onexit cleanup
# enough to determine if upgrade works correctly. Also set a MAX_VER
# variable, which specifies the highest version that we should expect
# a zpool upgrade operation to succeed from. (latest version - 1)
-if check_version "5.10"
-then
- CONFIGS="1 2 3 4 5 6 7 8 9 10 11 12 13 14 15"
- MAX_VER=15
-else
- CONFIGS="1 2 3 4 5 6 7 8 9 10 11 12 13 14 15"
- MAX_VER=15
-fi
+CONFIGS="1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 28"
+MAX_VER=28
for config in $CONFIGS
do
@@ -101,4 +95,3 @@ done
log_pass \
"Zpool upgrade should be able to upgrade pools to a given version using -V"
-
Modified: projects/zfsd/head/tests/sys/cddl/zfs/tests/cli_root/zpool_upgrade/zpool_upgrade_test.sh
==============================================================================
--- projects/zfsd/head/tests/sys/cddl/zfs/tests/cli_root/zpool_upgrade/zpool_upgrade_test.sh Sat Jan 24 00:43:02 2015 (r277629)
+++ projects/zfsd/head/tests/sys/cddl/zfs/tests/cli_root/zpool_upgrade/zpool_upgrade_test.sh Sat Jan 24 01:20:15 2015 (r277630)
@@ -35,7 +35,6 @@ zpool_upgrade_001_pos_head()
}
zpool_upgrade_001_pos_body()
{
- atf_skip "Testcase must be updated for zpool version 5000"
export TESTCASE_ID=$(echo $(atf_get ident) | cksum -o 2 | cut -f 1 -d " ")
. $(atf_get_srcdir)/../../../include/default.cfg
. $(atf_get_srcdir)/zpool_upgrade.kshlib
@@ -215,7 +214,8 @@ zpool_upgrade_007_pos_head()
atf_set "require.config" rt_medium
atf_set "require.config" at_least_2_disks
atf_set "require.progs" zpool
- atf_set "timeout" 1800
+ # This test can take quite a while, especially on debug bits.
+ atf_set "timeout" 7200
}
zpool_upgrade_007_pos_body()
{
Modified: projects/zfsd/head/tests/sys/cddl/zfs/tests/history/history_001_pos.ksh
==============================================================================
--- projects/zfsd/head/tests/sys/cddl/zfs/tests/history/history_001_pos.ksh Sat Jan 24 00:43:02 2015 (r277629)
+++ projects/zfsd/head/tests/sys/cddl/zfs/tests/history/history_001_pos.ksh Sat Jan 24 01:20:15 2015 (r277630)
@@ -75,10 +75,9 @@ function cleanup
log_assert "Verify zpool sub-commands which modify state are logged."
log_onexit cleanup
-mntpnt=$(get_prop mountpoint $TESTPOOL)
(( $? != 0)) && log_fail "get_prop($TESTPOOL mountpoint)"
-VDEV1=$mntpnt/vdev1; VDEV2=$mntpnt/vdev2;
-VDEV3=$mntpnt/vdev3; VDEV4=$mntpnt/vdev4;
+VDEV1=$TMPDIR/vdev1; VDEV2=$TMPDIR/vdev2;
+VDEV3=$TMPDIR/vdev3; VDEV4=$TMPDIR/vdev4;
log_must $MKFILE 64m $VDEV1 $VDEV2 $VDEV3
log_must $MKFILE 100m $VDEV4
@@ -93,9 +92,9 @@ exec_record $ZPOOL attach $MPOOL $VDEV1
exec_record $ZPOOL detach $MPOOL $VDEV4
exec_record $ZPOOL replace -f $MPOOL $VDEV1 $VDEV4
exec_record $ZPOOL export $MPOOL
-exec_record $ZPOOL import -d $mntpnt $MPOOL
+exec_record $ZPOOL import -d $TMPDIR $MPOOL
exec_record $ZPOOL destroy $MPOOL
-exec_record $ZPOOL import -D -f -d $mntpnt $MPOOL
+exec_record $ZPOOL import -D -f -d $TMPDIR $MPOOL
exec_record $ZPOOL clear $MPOOL
format_history $MPOOL $REAL_HISTORY
Modified: projects/zfsd/head/tests/sys/cddl/zfs/tests/history/history_003_pos.ksh
==============================================================================
--- projects/zfsd/head/tests/sys/cddl/zfs/tests/history/history_003_pos.ksh Sat Jan 24 00:43:02 2015 (r277629)
+++ projects/zfsd/head/tests/sys/cddl/zfs/tests/history/history_003_pos.ksh Sat Jan 24 01:20:15 2015 (r277630)
@@ -56,49 +56,31 @@
verify_runnable "global"
-function cleanup
-{
- datasetexists $spool && log_must $ZPOOL destroy $spool
- [[ -f $VDEV0 ]] && log_must $RM -f $VDEV0
- [[ -f $VDEV1 ]] && log_must $RM -f $VDEV1
-}
-
log_assert "zpool history limitation test."
-log_onexit cleanup
typeset -i expect_count=300
-mntpnt=$(get_prop mountpoint $TESTPOOL)
-(( $? != 0 )) && log_fail "get_prop mountpoint $TESTPOOL"
-
-VDEV0=$mntpnt/vdev0; VDEV1=$mntpnt/vdev1
-log_must $MKFILE 100m $VDEV0 $VDEV1
-
-spool=smallpool.${TESTCASE_ID}; sfs=smallfs.${TESTCASE_ID}
-log_must $ZPOOL create $spool $VDEV0 $VDEV1
-log_must $ZFS create $spool/$sfs
-
-typeset -i orig_count=$($ZPOOL history $spool | $WC -l | $AWK '{print $1}')
+typeset -i orig_count=$($ZPOOL history $TESTPOOL | $WC -l | $AWK '{print $1}')
typeset -i i=0
typeset -i num_iters=0
((num_iters = expect_count / 5))
while ((i < num_iters)); do
- $ZFS set compression=off $spool/$sfs
- $ZFS set compression=on $spool/$sfs
- $ZFS set compression=off $spool/$sfs
- $ZFS set compression=on $spool/$sfs
- $ZFS set compression=off $spool/$sfs
+ $ZFS set compression=off $TESTPOOL/$TESTFS
+ $ZFS set compression=on $TESTPOOL/$TESTFS
+ $ZFS set compression=off $TESTPOOL/$TESTFS
+ $ZFS set compression=on $TESTPOOL/$TESTFS
+ $ZFS set compression=off $TESTPOOL/$TESTFS
((i += 1))
done
-typeset -i entry_count=$($ZPOOL history $spool | $WC -l | $AWK '{print $1}')
+typeset -i entry_count=$($ZPOOL history $TESTPOOL | $WC -l | $AWK '{print $1}')
typeset -i count_diff=0
((count_diff = entry_count - orig_count))
if ((count_diff != expect_count)); then
echo "Zpool history is as follows:"
- log_must $ZPOOL history $spool
+ log_must $ZPOOL history $TESTPOOL
log_fail "Expected $expect_count new entries, got $count_diff"
fi
Modified: projects/zfsd/head/tests/sys/cddl/zfs/tests/history/history_test.sh
==============================================================================
--- projects/zfsd/head/tests/sys/cddl/zfs/tests/history/history_test.sh Sat Jan 24 00:43:02 2015 (r277629)
+++ projects/zfsd/head/tests/sys/cddl/zfs/tests/history/history_test.sh Sat Jan 24 01:20:15 2015 (r277630)
@@ -24,7 +24,7 @@
#
-atf_test_case history_001_pos cleanup
+atf_test_case history_001_pos
history_001_pos_head()
{
atf_set "descr" "Verify zpool sub-commands which modify state are logged."
@@ -39,19 +39,8 @@ history_001_pos_body()
. $(atf_get_srcdir)/history_common.kshlib
. $(atf_get_srcdir)/history.cfg
- ksh93 $(atf_get_srcdir)/setup.ksh || atf_fail "Setup failed"
ksh93 $(atf_get_srcdir)/history_001_pos.ksh || atf_fail "Testcase failed"
}
-history_001_pos_cleanup()
-{
- export TESTCASE_ID=$(echo $(atf_get ident) | cksum -o 2 | cut -f 1 -d " ")
- . $(atf_get_srcdir)/../../include/default.cfg
- . $(atf_get_srcdir)/history_common.kshlib
- . $(atf_get_srcdir)/history.cfg
-
- ksh93 $(atf_get_srcdir)/cleanup.ksh || atf_fail "Cleanup failed"
-}
-
atf_test_case history_002_pos cleanup
history_002_pos_head()
@@ -87,7 +76,7 @@ history_003_pos_head()
{
atf_set "descr" "zpool history limitation test."
atf_set "require.config" rt_long
- atf_set "require.progs" mkfile zpool zfs
+ atf_set "require.progs" zpool zfs
atf_set "timeout" 1800
}
history_003_pos_body()
Modified: projects/zfsd/head/tests/sys/cddl/zfs/tests/hotspare/hotspare_replace_003_neg.ksh
==============================================================================
--- projects/zfsd/head/tests/sys/cddl/zfs/tests/hotspare/hotspare_replace_003_neg.ksh Sat Jan 24 00:43:02 2015 (r277629)
+++ projects/zfsd/head/tests/sys/cddl/zfs/tests/hotspare/hotspare_replace_003_neg.ksh Sat Jan 24 01:20:15 2015 (r277630)
@@ -33,6 +33,7 @@
. $STF_SUITE/include/libtest.kshlib
. $STF_SUITE/include/libsas.kshlib
+. $STF_SUITE/tests/hotspare/hotspare.kshlib
# Reproduction script for Rally DE189:
# https://rally1.rallydev.com/#/9096795496d/detail/defect/13345916506
Modified: projects/zfsd/head/tests/sys/cddl/zfs/tests/snapshot/snapshot_test.sh
==============================================================================
--- projects/zfsd/head/tests/sys/cddl/zfs/tests/snapshot/snapshot_test.sh Sat Jan 24 00:43:02 2015 (r277629)
+++ projects/zfsd/head/tests/sys/cddl/zfs/tests/snapshot/snapshot_test.sh Sat Jan 24 01:20:15 2015 (r277630)
@@ -605,6 +605,7 @@ snapshot_019_pos_head()
atf_set "descr" "Accessing snapshots and unmounting them in parallel does not panic"
atf_set "require.config" rt_short
atf_set "require.progs" zfs
+ atf_set "timeout" 1200
}
snapshot_019_pos_body()
{
Modified: projects/zfsd/head/tests/sys/cddl/zfs/tests/zfsd/zfsd_fault_001_pos.ksh
==============================================================================
--- projects/zfsd/head/tests/sys/cddl/zfs/tests/zfsd/zfsd_fault_001_pos.ksh Sat Jan 24 00:43:02 2015 (r277629)
+++ projects/zfsd/head/tests/sys/cddl/zfs/tests/zfsd/zfsd_fault_001_pos.ksh Sat Jan 24 01:20:15 2015 (r277630)
@@ -117,7 +117,7 @@ for type in "raidz" "mirror"; do
/dev/null
dd if=/dev/zero bs=128k count=1 >> \
/$TESTPOOL/$TESTFS/$TESTFILE 2> /dev/null
- sync
+ $FSYNC /$TESTPOOL/$TESTFS/$TESTFILE
done
# Check to see if the pool is faulted yet
$ZPOOL status $TESTPOOL | grep -q 'state: DEGRADED'
Modified: projects/zfsd/head/tests/sys/cddl/zfs/tests/zil/zil.kshlib
==============================================================================
--- projects/zfsd/head/tests/sys/cddl/zfs/tests/zil/zil.kshlib Sat Jan 24 00:43:02 2015 (r277629)
+++ projects/zfsd/head/tests/sys/cddl/zfs/tests/zil/zil.kshlib Sat Jan 24 01:20:15 2015 (r277630)
@@ -33,7 +33,7 @@ function zil_setup
# sync it first. If a sync is not done first, no ZIL will exist,
# and consequently no post-freeze log records will be created.
log_must $TOUCH $TESTDIR/initial_data
- log_must $SYNC $TESTPOOL
+ log_must $FSYNC $TESTDIR/initial_data
log_must $ZPOOL freeze $TESTPOOL
log_must filesys_has_zil $TESTPOOL
return 0
Added: projects/zfsd/head/tests/sys/dtrace/Makefile
==============================================================================
--- /dev/null 00:00:00 1970 (empty, because file is newly added)
+++ projects/zfsd/head/tests/sys/dtrace/Makefile Sat Jan 24 01:20:15 2015 (r277630)
@@ -0,0 +1,11 @@
+# $FreeBSD$
+
+.include <bsd.own.mk>
+
+TESTSDIR= ${TESTSBASE}/sys/dtrace
+
+ATF_TESTS_SH= fasttrap
+
+FILESDIR= ${TESTSDIR}
+
+.include <bsd.test.mk>
Added: projects/zfsd/head/tests/sys/dtrace/fasttrap.sh
==============================================================================
--- /dev/null 00:00:00 1970 (empty, because file is newly added)
+++ projects/zfsd/head/tests/sys/dtrace/fasttrap.sh Sat Jan 24 01:20:15 2015 (r277630)
@@ -0,0 +1,101 @@
+#
+# Copyright (c) 2012 Spectra Logic Corporation
+# All rights reserved.
+#
+# Redistribution and use in source and binary forms, with or without
+# modification, are permitted provided that the following conditions
+# are met:
+# 1. Redistributions of source code must retain the above copyright
+# notice, this list of conditions, and the following disclaimer,
+# without modification.
+# 2. Redistributions in binary form must reproduce at minimum a disclaimer
+# substantially similar to the "NO WARRANTY" disclaimer below
+# ("Disclaimer") and any redistribution must be conditioned upon
+# including a substantially similar Disclaimer requirement for further
+# binary redistribution.
+#
+# NO WARRANTY
+# THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+# "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+# LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTIBILITY AND FITNESS FOR
+# A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
+# HOLDERS OR CONTRIBUTORS BE LIABLE FOR SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
+# DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
+# OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
+# HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT,
+# STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING
+# IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
+# POSSIBILITY OF SUCH DAMAGES.
+#
+# Authors: Alan Somers (Spectra Logic Corporation)
+#
+# $FreeBSD$
+
+
+#
+# Test Case: Repeatedly load and unload the fasttrap module in an environment
+# with frequent forks and execs and verify that the kernel does not panic.
+# Regresses SpectraLogic BUG25389 and BUG25382
+#
+atf_test_case fasttrap_load_unload
+fasttrap_load_unload_head()
+{
+ atf_set "descr" "Rapidly load and unload the fasttrap module"
+ atf_set "require.files" "/boot/kernel/fasttrap.ko"
+ atf_set "require.user" "root"
+}
+
+fasttrap_load_unload_body()
+{
+ fork_bomb_pids=""
+
+ # Explicitly load these modules (dependencies of fasttrap) so they
+ # won't be implicitly unloaded every time we unload fasttrap.
+ kldload cyclic
+ kldload dtrace
+
+ # Verify that we can load and unload fasttrap
+ { kldload fasttrap && kldunload fasttrap ; } || \
+ atf_skip "Cannot load and unload the fasttrap module"
+
+ # The number of fork_bomb threads should be comfortably greater than
+ # the number of cpus. That way we maximize the chance that a process
+ # gets preempted during the critical time window
+ N_FORK_THREADS=$(( 6 * $(sysctl kern.smp.cpus | awk '{print $2}') ))
+
+ i=0
+ while [ $i -lt $N_FORK_THREADS ]; do
+ fork_bomb &
+ fork_bomb_pids="$fork_bomb_pids $!"
+ i=$(($i+1))
+ done
+
+ i=0
+ while [ $i -lt "$RELOAD_COUNT" ]; do
+ kldload fasttrap
+ kldunload fasttrap
+ i=$(($i+1))
+ done
+
+ for p in $fork_bomb_pids; do
+ kill "$p"
+ done
+
+ # If we didn't panic, then we passed
+ atf_pass
+}
+
+
+atf_init_test_cases()
+{
+ atf_add_test_case fasttrap_load_unload
+}
+
+export RELOAD_COUNT=500
+
+fork_bomb()
+{
+ while true; do
+ uname > /dev/null
+ done
+}
Added: projects/zfsd/head/tests/sys/geom/Makefile
==============================================================================
--- /dev/null 00:00:00 1970 (empty, because file is newly added)
+++ projects/zfsd/head/tests/sys/geom/Makefile Sat Jan 24 01:20:15 2015 (r277630)
@@ -0,0 +1,11 @@
+# $FreeBSD$
+
+.include <bsd.own.mk>
+
+.PATH: ${.CURDIR}/..
+
+TESTS_SUBDIRS+= geom_part
+
+TESTSDIR= ${TESTSBASE}/sys/geom
+
+.include <bsd.test.mk>
Added: projects/zfsd/head/tests/sys/geom/geom_part/Makefile
==============================================================================
--- /dev/null 00:00:00 1970 (empty, because file is newly added)
+++ projects/zfsd/head/tests/sys/geom/geom_part/Makefile Sat Jan 24 01:20:15 2015 (r277630)
@@ -0,0 +1,9 @@
+# $FreeBSD$
+
+.include <bsd.own.mk>
+
+TESTSDIR= ${TESTSBASE}/sys/geom/geom_part
+
+TESTS_SH= geom_part_test
+
+.include <bsd.test.mk>
Added: projects/zfsd/head/tests/sys/geom/geom_part/geom_part_test.sh
==============================================================================
--- /dev/null 00:00:00 1970 (empty, because file is newly added)
+++ projects/zfsd/head/tests/sys/geom/geom_part/geom_part_test.sh Sat Jan 24 01:20:15 2015 (r277630)
@@ -0,0 +1,131 @@
+#
+# Copyright (c) 2013 Spectra Logic Corporation
+# All rights reserved.
+#
+# Redistribution and use in source and binary forms, with or without
+# modification, are permitted provided that the following conditions
+# are met:
+# 1. Redistributions of source code must retain the above copyright
+# notice, this list of conditions, and the following disclaimer,
+# without modification.
+# 2. Redistributions in binary form must reproduce at minimum a disclaimer
+# substantially similar to the "NO WARRANTY" disclaimer below
+# ("Disclaimer") and any redistribution must be conditioned upon
+# including a substantially similar Disclaimer requirement for further
+# binary redistribution.
+#
+# NO WARRANTY
+# THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+# "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+# LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTIBILITY AND FITNESS FOR
+# A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
+# HOLDERS OR CONTRIBUTORS BE LIABLE FOR SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
+# DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
+# OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
+# HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT,
+# STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING
+# IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
+# POSSIBILITY OF SUCH DAMAGES.
+#
+# Authors: Will Andrews (Spectra Logic Corporation)
+#
+# $FreeBSD$
+
+#
+# Test Case: GEOM partitions can be created
+#
+atf_test_case geom_part_create_test cleanup
+geom_part_create_test_head()
+{
+ atf_set "descr" "Test that gpart create works"
+ atf_set "has.cleanup" true
+ atf_set "require.progs" gpart
+ atf_set "require.user" "root"
+}
+
+geom_part_create_test_body()
+{
+ disk=$(pop_disk)
+ [ -z "$disk" ] && atf_skip "Could not select a disk!"
+ gpart destroy -F $disk 2>/dev/null || true
+ atf_check -s exit:0 test -c ${disk}
+
+ run_cmd "gpart create -s gpt $disk"
+ on_cmd_failure "GPT creation failed on $disk"
+ atf_check -s exit:1 test -c ${disk}p1
+
+ run_cmd "gpart add -a 1m -s 64k -t freebsd-boot $disk"
+ on_cmd_failure "Boot partition add failure"
+ atf_check -s exit:0 test -c ${disk}p1
+ atf_check -s exit:1 test -c ${disk}p2
+
+ run_cmd "gpart add -t efi -s 10g $disk"
+ on_cmd_failure "EFI partition add failure"
+ atf_check -s exit:0 test -c ${disk}p1
+ atf_check -s exit:0 test -c ${disk}p2
+ atf_check -s exit:1 test -c ${disk}p3
+
+ run_cmd "gpart add -a 1m -s 4G -t freebsd-swap -l swap0 $disk"
+ on_cmd_failure "Swap partition add failure"
+ atf_check -s exit:0 test -c ${disk}p2
+ atf_check -s exit:0 test -c ${disk}p3
+ atf_check -s exit:1 test -c ${disk}p4
+
+ run_cmd "gpart add -a 1m -t freebsd-zfs -l system_pool0 $disk"
+ on_cmd_failure "ZFS partition add failure"
+ atf_check -s exit:0 test -c ${disk}p3
+ atf_check -s exit:0 test -c ${disk}p4
+ atf_check -s exit:1 test -c ${disk}p5
+
+ sleep 1 # XXX destroy returns "busy" without this...
+ run_cmd "gpart destroy -F $disk"
+ on_cmd_failure "Unable to cleanup $disk: $cmdout"
+ atf_pass
+}
+
+geom_part_create_test_cleanup()
+{
+ # XXX Can't pass state from body to cleanup.
+ #gpart destroy -F $disk >/dev/null 2>&1 || true
+ true
+}
+
+#
+# ATF Test Program Initialization
+#
+atf_init_test_cases()
+{
+ atf_add_test_case geom_part_create_test
+}
+
+pop_disk()
+{
+ old_args=$*
+ set -- $DISKS
+ DISKS=""
+ i=1
+ for d in $*; do
+ if [ $i -eq $# ]; then
+ disk=$d
+ break
+ fi
+ i=`expr $i + 1`
+ DISKS="$DISKS $d"
+ done
+ set -- $old_args
+ echo $disk
+}
+
+run_cmd()
+{
+ cmd=$1
+ echo "Running command: ${cmd}"
+ cmdout=`eval $cmd 2>&1`
+ cmdret=$?
+}
+
+on_cmd_failure()
+{
+ fail_reason=$1
*** DIFF OUTPUT TRUNCATED AT 1000 LINES ***
More information about the svn-src-projects
mailing list