From owner-svn-src-projects@FreeBSD.ORG Sat Jan 24 01:20:24 2015 Return-Path: Delivered-To: svn-src-projects@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:1900:2254:206a::19:1]) (using TLSv1.2 with cipher AECDH-AES256-SHA (256/256 bits)) (No client certificate requested) by hub.freebsd.org (Postfix) with ESMTPS id 8B20AA7F; Sat, 24 Jan 2015 01:20:24 +0000 (UTC) Received: from svn.freebsd.org (svn.freebsd.org [IPv6:2001:1900:2254:2068::e6a:0]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (Client did not present a certificate) by mx1.freebsd.org (Postfix) with ESMTPS id 73865FE0; Sat, 24 Jan 2015 01:20:24 +0000 (UTC) Received: from svn.freebsd.org ([127.0.1.70]) by svn.freebsd.org (8.14.9/8.14.9) with ESMTP id t0O1KO4m027298; Sat, 24 Jan 2015 01:20:24 GMT (envelope-from will@FreeBSD.org) Received: (from will@localhost) by svn.freebsd.org (8.14.9/8.14.9/Submit) id t0O1KGjo027234; Sat, 24 Jan 2015 01:20:16 GMT (envelope-from will@FreeBSD.org) Message-Id: <201501240120.t0O1KGjo027234@svn.freebsd.org> X-Authentication-Warning: svn.freebsd.org: will set sender to will@FreeBSD.org using -f From: Will Andrews Date: Sat, 24 Jan 2015 01:20:16 +0000 (UTC) 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... X-SVN-Group: projects MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit X-BeenThere: svn-src-projects@freebsd.org X-Mailman-Version: 2.1.18-1 Precedence: list List-Id: "SVN commit messages for the src " projects" tree" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Sat, 24 Jan 2015 01:20:24 -0000 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 -.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 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 ' 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 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 =. +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 + +TESTSDIR= ${TESTSBASE}/sys/dtrace + +ATF_TESTS_SH= fasttrap + +FILESDIR= ${TESTSDIR} + +.include 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 + +.PATH: ${.CURDIR}/.. + +TESTS_SUBDIRS+= geom_part + +TESTSDIR= ${TESTSBASE}/sys/geom + +.include 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 + +TESTSDIR= ${TESTSBASE}/sys/geom/geom_part + +TESTS_SH= geom_part_test + +.include 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 ***