From b3af24b4ff6df484d17808b4e915a2708841f1f9 Mon Sep 17 00:00:00 2001 From: Enji Cooper Date: Sat, 17 Oct 2015 08:39:37 +0000 Subject: [PATCH] Integrate tools/regression/acltools into the FreeBSD test suite as tests/sys/acl - Make the requirements more complete for the testcases - Detect prerequisites so the tests won't fail (zfs.ko is loaded, zpool(1) is available, ACL support is enabled with UFS, etc). - Work with temporary files/directories/mountpoints that work with atf/kyua - Limit the testcases to work on temporary filesystems to reduce tainting the test host MFC after: 2 weeks Reviewed by: trasz (earlier version) Differential Revision: https://reviews.freebsd.org/D3810 --- etc/mtree/BSD.tests.dist | 2 ++ tests/sys/Makefile | 1 + .../acltools/00.t => tests/sys/acl/00.sh | 19 +++++++----- .../acltools/01.t => tests/sys/acl/01.sh | 21 +++++++------- .../acltools/02.t => tests/sys/acl/02.sh | 19 +++++++----- .../acltools/03.t => tests/sys/acl/03.sh | 17 +++++++---- .../acltools/04.t => tests/sys/acl/04.sh | 14 +++++---- tests/sys/acl/Makefile | 29 +++++++++++++++++++ .../acltools => tests/sys/acl}/aclfuzzer.sh | 0 .../acltools => tests/sys/acl}/mktrivial.sh | 0 .../regression/acltools => tests/sys/acl}/run | 0 .../sys/acl}/tools-crossfs.test | 0 .../sys/acl}/tools-nfs4-psarc.test | 0 .../sys/acl}/tools-nfs4-trivial.test | 0 .../sys/acl}/tools-nfs4.test | 0 .../sys/acl}/tools-posix.test | 0 16 files changed, 86 insertions(+), 36 deletions(-) rename tools/regression/acltools/00.t => tests/sys/acl/00.sh (89%) rename tools/regression/acltools/01.t => tests/sys/acl/01.sh (89%) rename tools/regression/acltools/02.t => tests/sys/acl/02.sh (89%) rename tools/regression/acltools/03.t => tests/sys/acl/03.sh (91%) rename tools/regression/acltools/04.t => tests/sys/acl/04.sh (91%) create mode 100644 tests/sys/acl/Makefile rename {tools/regression/acltools => tests/sys/acl}/aclfuzzer.sh (100%) rename {tools/regression/acltools => tests/sys/acl}/mktrivial.sh (100%) rename {tools/regression/acltools => tests/sys/acl}/run (100%) rename {tools/regression/acltools => tests/sys/acl}/tools-crossfs.test (100%) rename {tools/regression/acltools => tests/sys/acl}/tools-nfs4-psarc.test (100%) rename {tools/regression/acltools => tests/sys/acl}/tools-nfs4-trivial.test (100%) rename {tools/regression/acltools => tests/sys/acl}/tools-nfs4.test (100%) rename {tools/regression/acltools => tests/sys/acl}/tools-posix.test (100%) diff --git a/etc/mtree/BSD.tests.dist b/etc/mtree/BSD.tests.dist index 1ca3d4d6c7d..c31eaaa97e3 100644 --- a/etc/mtree/BSD.tests.dist +++ b/etc/mtree/BSD.tests.dist @@ -360,6 +360,8 @@ .. .. sys + acl + .. aio .. fifo diff --git a/tests/sys/Makefile b/tests/sys/Makefile index eb7d1bada26..015040ddfd6 100644 --- a/tests/sys/Makefile +++ b/tests/sys/Makefile @@ -4,6 +4,7 @@ TESTSDIR= ${TESTSBASE}/sys +TESTS_SUBDIRS+= acl TESTS_SUBDIRS+= aio TESTS_SUBDIRS+= fifo TESTS_SUBDIRS+= file diff --git a/tools/regression/acltools/00.t b/tests/sys/acl/00.sh similarity index 89% rename from tools/regression/acltools/00.t rename to tests/sys/acl/00.sh index 88990887773..61e8115525f 100644 --- a/tools/regression/acltools/00.t +++ b/tests/sys/acl/00.sh @@ -37,12 +37,16 @@ # # Output should be obvious. -echo "1..4" - -if [ `whoami` != "root" ]; then - echo "not ok 1 - you need to be root to run this test." - exit 1 +if [ $(sysctl -n kern.features.ufs_acl 2>/dev/null || echo 0) -eq 0 ]; then + echo "1..0 # SKIP system does not have UFS ACL support" + exit 0 fi +if [ $(id -u) -ne 0 ]; then + echo "1..0 # SKIP you must be root" + exit 0 +fi + +echo "1..4" TESTDIR=$(dirname $(realpath $0)) @@ -50,9 +54,11 @@ TESTDIR=$(dirname $(realpath $0)) MD=`mdconfig -at swap -s 10m` MNT=`mktemp -dt acltools` newfs /dev/$MD > /dev/null +trap "cd /; umount -f $MNT; rmdir $MNT; mdconfig -d -u $MD" EXIT mount -o acls /dev/$MD $MNT if [ $? -ne 0 ]; then echo "not ok 1 - mount failed." + echo 'Bail out!' exit 1 fi @@ -78,8 +84,5 @@ else fi cd / -umount -f $MNT -rmdir $MNT -mdconfig -du $MD echo "ok 4" diff --git a/tools/regression/acltools/01.t b/tests/sys/acl/01.sh similarity index 89% rename from tools/regression/acltools/01.t rename to tests/sys/acl/01.sh index f84e0a98b46..93487a77263 100644 --- a/tools/regression/acltools/01.t +++ b/tests/sys/acl/01.sh @@ -39,21 +39,27 @@ # # Output should be obvious. -echo "1..4" - -if [ `whoami` != "root" ]; then - echo "not ok 1 - you need to be root to run this test." - exit 1 +if ! sysctl vfs.zfs.version.spa >/dev/null 2>&1; then + echo "1..0 # SKIP system doesn't have ZFS loaded" + exit 0 fi +if [ $(id -u) -ne 0 ]; then + echo "1..0 # SKIP you must be root" + exit 0 +fi + +echo "1..4" TESTDIR=$(dirname $(realpath $0)) # Set up the test filesystem. MD=`mdconfig -at swap -s 64m` MNT=`mktemp -dt acltools` +trap "cd /; zpool destroy -f acltools; rmdir $MNT; mdconfig -d -u $MD" EXIT zpool create -m $MNT acltools /dev/$MD if [ $? -ne 0 ]; then echo "not ok 1 - 'zpool create' failed." + echo 'Bail out!' exit 1 fi @@ -78,9 +84,4 @@ else echo "not ok 3" fi -cd / -zpool destroy -f acltools -rmdir $MNT -mdconfig -du $MD - echo "ok 4" diff --git a/tools/regression/acltools/02.t b/tests/sys/acl/02.sh similarity index 89% rename from tools/regression/acltools/02.t rename to tests/sys/acl/02.sh index 9a82c78d145..8fbb39de4d6 100644 --- a/tools/regression/acltools/02.t +++ b/tests/sys/acl/02.sh @@ -37,12 +37,16 @@ # # Output should be obvious. -echo "1..4" - -if [ `whoami` != "root" ]; then - echo "not ok 1 - you need to be root to run this test." - exit 1 +if [ $(sysctl -n kern.features.ufs_acl 2>/dev/null || echo 0) -eq 0 ]; then + echo "1..0 # SKIP system does not have UFS ACL support" + exit 0 fi +if [ $(id -u) -ne 0 ]; then + echo "1..0 # SKIP you must be root" + exit 0 +fi + +echo "1..4" TESTDIR=$(dirname $(realpath $0)) @@ -50,9 +54,11 @@ TESTDIR=$(dirname $(realpath $0)) MD=`mdconfig -at swap -s 10m` MNT=`mktemp -dt acltools` newfs /dev/$MD > /dev/null +trap "cd /; umount -f $MNT; rmdir $MNT; mdconfig -d -u $MD" EXIT mount -o nfsv4acls /dev/$MD $MNT if [ $? -ne 0 ]; then echo "not ok 1 - mount failed." + echo 'Bail out!' exit 1 fi @@ -82,9 +88,6 @@ else fi cd / -umount -f $MNT -rmdir $MNT -mdconfig -du $MD echo "ok 4" diff --git a/tools/regression/acltools/03.t b/tests/sys/acl/03.sh similarity index 91% rename from tools/regression/acltools/03.t rename to tests/sys/acl/03.sh index a0b4199c2bf..2b81b266230 100644 --- a/tools/regression/acltools/03.t +++ b/tests/sys/acl/03.sh @@ -34,12 +34,16 @@ # # Output should be obvious. -echo "1..5" - -if [ `whoami` != "root" ]; then - echo "not ok 1 - you need to be root to run this test." - exit 1 +if ! sysctl vfs.zfs.version.spa >/dev/null 2>&1; then + echo "1..0 # SKIP system doesn't have ZFS loaded" + exit 0 fi +if [ $(id -u) -ne 0 ]; then + echo "1..0 # SKIP you must be root" + exit 0 +fi + +echo "1..5" TESTDIR=$(dirname $(realpath $0)) MNTROOT=`mktemp -dt acltools` @@ -51,6 +55,7 @@ mkdir $MNT1 zpool create -m $MNT1 acltools /dev/$MD1 if [ $? -ne 0 ]; then echo "not ok 1 - 'zpool create' failed." + echo 'Bail out!' exit 1 fi @@ -63,6 +68,7 @@ newfs /dev/$MD2 > /dev/null mount -o acls /dev/$MD2 $MNT2 if [ $? -ne 0 ]; then echo "not ok 2 - mount failed." + echo 'Bail out!' exit 1 fi @@ -75,6 +81,7 @@ newfs /dev/$MD3 > /dev/null mount /dev/$MD3 $MNT3 if [ $? -ne 0 ]; then echo "not ok 3 - mount failed." + echo 'Bail out!' exit 1 fi diff --git a/tools/regression/acltools/04.t b/tests/sys/acl/04.sh similarity index 91% rename from tools/regression/acltools/04.t rename to tests/sys/acl/04.sh index 1a13183475f..5669c5a48d2 100644 --- a/tools/regression/acltools/04.t +++ b/tests/sys/acl/04.sh @@ -31,12 +31,16 @@ # # WARNING: It uses hardcoded ZFS pool name "acltools" -echo "1..3" - -if [ `whoami` != "root" ]; then - echo "not ok 1 - you need to be root to run this test." - exit 1 +if ! sysctl vfs.zfs.version.spa >/dev/null 2>&1; then + echo "1..0 # SKIP system doesn't have ZFS loaded" + exit 0 fi +if [ $(id -u) -ne 0 ]; then + echo "1..0 # SKIP you must be root" + exit 0 +fi + +echo "1..3" TESTDIR=$(dirname $(realpath $0)) diff --git a/tests/sys/acl/Makefile b/tests/sys/acl/Makefile new file mode 100644 index 00000000000..298b0a27c91 --- /dev/null +++ b/tests/sys/acl/Makefile @@ -0,0 +1,29 @@ +# $FreeBSD$ + +TESTSDIR= ${TESTSBASE}/sys/acl + +BINDIR= ${TESTSDIR} + +FILES+= tools-crossfs.test +FILES+= tools-nfs4.test +FILES+= tools-nfs4-psarc.test +FILES+= tools-nfs4-trivial.test +FILES+= tools-posix.test + +SCRIPTS+= run + +TAP_TESTS_SH+= 00 +TAP_TESTS_SH+= 01 +TAP_TESTS_SH+= 02 +TAP_TESTS_SH+= 03 +TAP_TESTS_SH+= 04 + +.for t in ${TAP_TESTS_SH} +TEST_METADATA.$t+= required_user="root" +.endfor + +.for t in 01 03 04 +TEST_METADATA.$t+= required_programs="/sbin/zpool" +.endfor + +.include diff --git a/tools/regression/acltools/aclfuzzer.sh b/tests/sys/acl/aclfuzzer.sh similarity index 100% rename from tools/regression/acltools/aclfuzzer.sh rename to tests/sys/acl/aclfuzzer.sh diff --git a/tools/regression/acltools/mktrivial.sh b/tests/sys/acl/mktrivial.sh similarity index 100% rename from tools/regression/acltools/mktrivial.sh rename to tests/sys/acl/mktrivial.sh diff --git a/tools/regression/acltools/run b/tests/sys/acl/run similarity index 100% rename from tools/regression/acltools/run rename to tests/sys/acl/run diff --git a/tools/regression/acltools/tools-crossfs.test b/tests/sys/acl/tools-crossfs.test similarity index 100% rename from tools/regression/acltools/tools-crossfs.test rename to tests/sys/acl/tools-crossfs.test diff --git a/tools/regression/acltools/tools-nfs4-psarc.test b/tests/sys/acl/tools-nfs4-psarc.test similarity index 100% rename from tools/regression/acltools/tools-nfs4-psarc.test rename to tests/sys/acl/tools-nfs4-psarc.test diff --git a/tools/regression/acltools/tools-nfs4-trivial.test b/tests/sys/acl/tools-nfs4-trivial.test similarity index 100% rename from tools/regression/acltools/tools-nfs4-trivial.test rename to tests/sys/acl/tools-nfs4-trivial.test diff --git a/tools/regression/acltools/tools-nfs4.test b/tests/sys/acl/tools-nfs4.test similarity index 100% rename from tools/regression/acltools/tools-nfs4.test rename to tests/sys/acl/tools-nfs4.test diff --git a/tools/regression/acltools/tools-posix.test b/tests/sys/acl/tools-posix.test similarity index 100% rename from tools/regression/acltools/tools-posix.test rename to tests/sys/acl/tools-posix.test