Page Menu
Home
FreeBSD
Search
Configure Global Search
Log In
Files
F163422069
D56605.id176677.diff
No One
Temporary
Actions
View File
Edit File
Delete File
View Transforms
Subscribe
Mute Notifications
Flag For Later
Award Token
Size
7 KB
Referenced Files
None
Subscribers
None
D56605.id176677.diff
View Options
diff --git a/etc/mtree/BSD.tests.dist b/etc/mtree/BSD.tests.dist
--- a/etc/mtree/BSD.tests.dist
+++ b/etc/mtree/BSD.tests.dist
@@ -834,6 +834,8 @@
fs
fusefs
..
+ pjdfstest
+ ..
tarfs
..
tmpfs
diff --git a/tests/sys/fs/Makefile b/tests/sys/fs/Makefile
--- a/tests/sys/fs/Makefile
+++ b/tests/sys/fs/Makefile
@@ -12,6 +12,7 @@
.if ${COMPILER_FEATURES:Mc++14} && ${MK_GOOGLETEST} != "no"
TESTS_SUBDIRS+= fusefs
.endif
+TESTS_SUBDIRS+= pjdfstest
TESTS_SUBDIRS+= tarfs
TESTS_SUBDIRS+= tmpfs
TESTS_SUBDIRS+= unionfs
diff --git a/tests/sys/fs/pjdfstest/Makefile b/tests/sys/fs/pjdfstest/Makefile
new file mode 100644
--- /dev/null
+++ b/tests/sys/fs/pjdfstest/Makefile
@@ -0,0 +1,13 @@
+TESTSDIR= ${TESTSBASE}/sys/fs/pjdfstest
+
+PACKAGE= tests
+
+ATF_TESTS_SH+= p9fs \
+ tmpfs \
+ ufs \
+ zfs
+
+# Tests use an external resource.
+TEST_METADATA.p9fs+= is_exclusive=true
+
+.include <bsd.test.mk>
diff --git a/tests/sys/fs/pjdfstest/p9fs.sh b/tests/sys/fs/pjdfstest/p9fs.sh
new file mode 100644
--- /dev/null
+++ b/tests/sys/fs/pjdfstest/p9fs.sh
@@ -0,0 +1,70 @@
+#!/usr/bin/env atf-sh
+#
+# Copyright (c) 2026 Mark Johnston <markj@FreeBSD.org>
+#
+# SPDX-License-Identifier: BSD-2-Clause
+#
+
+setup()
+{
+ local share
+
+ cat <<__EOF__ > pjdfstest.toml
+[features]
+chflags = {}
+posix_fallocate = {}
+rename_ctime = {}
+stat_st_birthtime = {}
+utimensat = {}
+utime_now = {}
+
+[settings]
+naptime = 0.001
+__EOF__
+
+ share=$(atf_config_get p9fs_shares "")
+ if [ -z "$share" ]; then
+ atf_skip "No p9fs shares configured"
+ fi
+ # Get the first share from the list.
+ share=${share%% *}
+ atf_check mkdir mnt
+ atf_check mount -o rw -t p9fs $share mnt
+}
+
+doit()
+{
+ atf_check -o ignore pjdfstest -c pjdfstest.toml -p mnt
+ atf_check umount mnt
+ atf_check rmdir mnt
+}
+
+cleanup()
+{
+ if [ -d ./mnt ]; then
+ umount ./mnt
+ fi
+}
+
+atf_test_case p9fs cleanup
+p9fs_head()
+{
+ atf_set "descr" "Checks that pjdfstest passes on p9fs"
+ atf_set require.user root
+ atf_set require.progs pjdfstest
+ atf_set require.kmods p9fs
+}
+p9fs_body()
+{
+ setup
+ doit
+}
+p9fs_cleanup()
+{
+ cleanup
+}
+
+atf_init_test_cases()
+{
+ atf_add_test_case p9fs
+}
diff --git a/tests/sys/fs/pjdfstest/tmpfs.sh b/tests/sys/fs/pjdfstest/tmpfs.sh
new file mode 100644
--- /dev/null
+++ b/tests/sys/fs/pjdfstest/tmpfs.sh
@@ -0,0 +1,59 @@
+#!/usr/bin/env atf-sh
+#
+# Copyright (c) 2026 Mark Johnston <markj@FreeBSD.org>
+#
+# SPDX-License-Identifier: BSD-2-Clause
+#
+
+setup()
+{
+ cat <<__EOF__ > pjdfstest.toml
+[features]
+chflags = {}
+posix_fallocate = {}
+rename_ctime = {}
+stat_st_birthtime = {}
+utimensat = {}
+utime_now = {}
+
+[settings]
+naptime = 0.001
+__EOF__
+
+ atf_check mkdir mnt
+ atf_check mount -t tmpfs none mnt
+}
+
+doit()
+{
+ atf_check -o ignore pjdfstest -c pjdfstest.toml -p mnt
+ atf_check umount mnt
+ atf_check rmdir mnt
+}
+
+cleanup()
+{
+ if [ -d ./mnt ]; then
+ umount ./mnt
+ fi
+}
+
+atf_test_case tmpfs cleanup
+tmpfs_head()
+{
+ atf_set "descr" "Checks that pjdfstest passes on tmpfs"
+}
+tmpfs_body()
+{
+ setup
+ doit
+}
+tmpfs_cleanup()
+{
+ cleanup
+}
+
+atf_init_test_cases()
+{
+ atf_add_test_case tmpfs
+}
diff --git a/tests/sys/fs/pjdfstest/ufs.sh b/tests/sys/fs/pjdfstest/ufs.sh
new file mode 100644
--- /dev/null
+++ b/tests/sys/fs/pjdfstest/ufs.sh
@@ -0,0 +1,131 @@
+#!/usr/bin/env atf-sh
+#
+# Copyright (c) 2026 Mark Johnston <markj@FreeBSD.org>
+#
+# SPDX-License-Identifier: BSD-2-Clause
+#
+
+setup()
+{
+ local md
+
+ atf_check -o save:md mdconfig -a -t swap -s 1g
+ md=/dev/$(cat md)
+ atf_check -o ignore -e ignore newfs -t $@ $md
+
+ cat <<__EOF__ > pjdfstest.toml
+[features]
+chflags = {}
+posix_fallocate = {}
+rename_ctime = {}
+stat_st_birthtime = {}
+utimensat = {}
+utime_now = {}
+
+[settings]
+naptime = 0.001
+__EOF__
+
+ atf_check mkdir mnt
+ atf_check mount $md ./mnt
+}
+
+doit()
+{
+ atf_check -o ignore pjdfstest -c pjdfstest.toml -p mnt
+ atf_check umount ./mnt
+ atf_check rmdir ./mnt
+}
+
+cleanup()
+{
+ if [ -d ./mnt ]; then
+ umount ./mnt
+ fi
+ if [ -f md ]; then
+ mdconfig -d -u $(cat md)
+ fi
+}
+
+atf_test_case ufs1 cleanup
+ufs1_head()
+{
+ atf_set "descr" "Run pjdfstest on a UFS1 filesystem"
+ atf_set require.user root
+ atf_set require.progs pjdfstest
+}
+ufs1_body()
+{
+ setup -O 1
+ # UFS1 doesn't have 64-bit timestamps or a birthtime field in the inode.
+ cat >> pjdfstest.toml <<__EOF__
+expected_failures = [
+"utimensat::birthtime",
+"utimensat::y2038"
+]
+__EOF__
+ doit
+}
+ufs1_cleanup()
+{
+ cleanup
+}
+
+atf_test_case ufs2_nosu cleanup
+ufs2_nosu_head()
+{
+ atf_set "descr" "Run pjdfstest on a UFS2 filesystem without soft updates"
+ atf_set require.user root
+ atf_set require.progs pjdfstest
+}
+ufs2_nosu_body()
+{
+ setup -O 2 -u
+ doit
+}
+ufs2_nosu_cleanup()
+{
+ cleanup
+}
+
+atf_test_case ufs2_su cleanup
+ufs2_su_head()
+{
+ atf_set "descr" "Run pjdfstest on a UFS2 filesystem with soft updates"
+ atf_set require.user root
+ atf_set require.progs pjdfstest
+}
+ufs2_su_body()
+{
+ setup -O 2 -U
+ doit
+}
+ufs2_su_cleanup()
+{
+ cleanup
+}
+
+atf_test_case ufs2_suj cleanup
+ufs2_suj_head()
+{
+ atf_set "descr" "Run pjdfstest on a UFS2 filesystem with soft updates journaling"
+ atf_set require.user root
+ atf_set require.progs pjdfstest
+}
+ufs2_suj_body()
+{
+ setup -O 2 -U -j
+ doit
+}
+ufs2_suj_cleanup()
+{
+ cleanup
+}
+
+atf_init_test_cases()
+{
+ atf_add_test_case ufs1
+ atf_add_test_case ufs2_nosu
+ atf_add_test_case ufs2_su
+ atf_add_test_case ufs2_suj
+}
diff --git a/tests/sys/fs/pjdfstest/zfs.sh b/tests/sys/fs/pjdfstest/zfs.sh
new file mode 100644
--- /dev/null
+++ b/tests/sys/fs/pjdfstest/zfs.sh
@@ -0,0 +1,95 @@
+#!/usr/bin/env atf-sh
+#
+# Copyright (c) 2026 Mark Johnston <markj@FreeBSD.org>
+#
+# SPDX-License-Identifier: BSD-2-Clause
+#
+
+setup()
+{
+ local disk pool
+
+ truncate -s 1g disk
+
+ cat <<__EOF__ > pjdfstest.toml
+[features]
+chflags = {}
+rename_ctime = {}
+stat_st_birthtime = {}
+utimensat = {}
+utime_now = {}
+
+[settings]
+naptime = 0.001
+__EOF__
+
+ atf_check mkdir mnt
+ pool=pjdfstest$$
+ atf_check zpool create -m $(pwd)/mnt $pool $(pwd)/disk
+ echo $pool > pool
+}
+
+doit()
+{
+ local mp
+
+ mp=${1:-mnt}
+ atf_check -o ignore pjdfstest -c pjdfstest.toml -p $mp
+ if [ "$mp" != "mnt" ]; then
+ atf_check umount $mp
+ atf_check rmdir $mp
+ fi
+ atf_check zpool destroy $(cat pool)
+ atf_check rm -f pool
+}
+
+cleanup()
+{
+ if [ -f pool ]; then
+ zpool destroy $(cat pool)
+ fi
+}
+
+atf_test_case zfs cleanup
+zfs_head()
+{
+ atf_set "descr" "Checks that pjdfstest passes on zfs"
+ atf_set require.user root
+ atf_set require.progs pjdfstest
+}
+zfs_body()
+{
+ setup
+ doit
+}
+zfs_cleanup()
+{
+ cleanup
+}
+
+atf_test_case zfs_nullfs cleanup
+zfs_nullfs_head()
+{
+ atf_set "descr" "Checks that pjdfstest passes on zfs mounted via nullfs"
+}
+zfs_nullfs_body()
+{
+ setup
+ atf_check mkdir mnt2
+ atf_check mount -t nullfs mnt mnt2
+ doit mnt2
+}
+zfs_nullfs_cleanup()
+{
+ if [ -d mnt2 ]; then
+ umount mnt2
+ rmdir mnt2
+ fi
+ cleanup
+}
+
+atf_init_test_cases()
+{
+ atf_add_test_case zfs
+ atf_add_test_case zfs_nullfs
+}
File Metadata
Details
Attached
Mime Type
text/plain
Expires
Fri, Jul 24, 2:04 AM (8 h, 37 m)
Storage Engine
blob
Storage Format
Raw Data
Storage Handle
35424713
Default Alt Text
D56605.id176677.diff (7 KB)
Attached To
Mode
D56605: tests: Add better pjdfstest integration
Attached
Detach File
Event Timeline
Log In to Comment