Skip site navigation (1)Skip section navigation (2)
Date:      Sat, 24 Jan 2015 01:20:16 +0000 (UTC)
From:      Will Andrews <will@FreeBSD.org>
To:        src-committers@freebsd.org, svn-src-projects@freebsd.org
Subject:   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...
Message-ID:  <201501240120.t0O1KGjo027234@svn.freebsd.org>

next in thread | raw e-mail | index | archive | help
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 ***



Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?201501240120.t0O1KGjo027234>