[LTP] [PATCH v2 3/3] Add test for NFS directory listing regression
Martin Doucha
mdoucha@suse.cz
Tue Nov 23 16:15:37 CET 2021
---
Changes since v1:
- Replace Bash-style brace expansion with $(seq ...)
- Document command line parameter in usage info
runtest/net.nfs | 11 ++++
testcases/network/nfs/nfs_stress/Makefile | 3 +-
testcases/network/nfs/nfs_stress/nfs07.sh | 67 +++++++++++++++++++++++
3 files changed, 80 insertions(+), 1 deletion(-)
create mode 100755 testcases/network/nfs/nfs_stress/nfs07.sh
diff --git a/runtest/net.nfs b/runtest/net.nfs
index 3df35809a..042c14ce4 100644
--- a/runtest/net.nfs
+++ b/runtest/net.nfs
@@ -61,6 +61,17 @@ nfs01_06 nfs06 -v "3,3,3,4,4,4" -t "udp,udp,tcp,tcp,tcp,tcp"
nfs02_06 nfs06 -v "3,4,4.1,4.2,4.2,4.2" -t "udp,tcp,tcp,tcp,tcp,tcp"
nfs03_ipv6_06 nfs06 -6 -v "4,4.1,4.1,4.2,4.2,4.2" -t "tcp,tcp,tcp,tcp,tcp,tcp"
+nfs3_07 nfs07.sh -v 3 -t udp
+nfs3t_07 nfs07.sh -v 3 -t tcp
+nfs4_07 nfs07.sh -v 4 -t tcp
+nfs41_07 nfs07.sh -v 4.1 -t tcp
+nfs42_07 nfs07.sh -v 4.2 -t tcp
+nfs3_ipv6_07 nfs07.sh -6 -v 3 -t udp
+nfs3t_ipv6_07 nfs07.sh -6 -v 3 -t tcp
+nfs4_ipv6_07 nfs07.sh -6 -v 4 -t tcp
+nfs41_ipv6_07 nfs07.sh -6 -v 4.1 -t tcp
+nfs42_ipv6_07 nfs07.sh -6 -v 4.2 -t tcp
+
nfslock3_01 nfslock01 -v 3 -t udp
nfslock3t_01 nfslock01 -v 3 -t tcp
nfslock4_01 nfslock01 -v 4 -t tcp
diff --git a/testcases/network/nfs/nfs_stress/Makefile b/testcases/network/nfs/nfs_stress/Makefile
index 856008ce2..0b7408e29 100644
--- a/testcases/network/nfs/nfs_stress/Makefile
+++ b/testcases/network/nfs/nfs_stress/Makefile
@@ -15,6 +15,7 @@ INSTALL_TARGETS := nfs_lib.sh \
nfs03 \
nfs04 \
nfs05 \
- nfs06
+ nfs06 \
+ nfs07.sh
include $(top_srcdir)/include/mk/generic_leaf_target.mk
diff --git a/testcases/network/nfs/nfs_stress/nfs07.sh b/testcases/network/nfs/nfs_stress/nfs07.sh
new file mode 100755
index 000000000..2c04746fa
--- /dev/null
+++ b/testcases/network/nfs/nfs_stress/nfs07.sh
@@ -0,0 +1,67 @@
+#!/bin/sh
+# SPDX-License-Identifier: GPL-2.0-or-later
+# Copyright (c) 2021 SUSE LLC <mdoucha@suse.cz>
+#
+# DESCRIPTION: Create a large number of files and directories on NFS volume.
+# Then check whether they can be listed via NFS.
+
+FILE_COUNT=5000
+
+TST_OPTS="n:"
+TST_PARSE_ARGS=do_parse_args
+TST_TESTFUNC="do_test"
+TST_SETUP="do_setup"
+
+do_parse_args()
+{
+ case "$1" in
+ n) FILE_COUNT="$2";;
+ esac
+}
+
+. nfs_lib.sh
+
+TST_USAGE="show_usage"
+
+show_usage()
+{
+ nfs_usage
+ echo "-n x Create x files and x directories, default is 5000"
+}
+
+do_setup()
+{
+ nfs_setup
+
+ local rpath=$(nfs_get_remote_path | sed -e 's/%/%%/g')
+ local file_fmt="$rpath/file%1.0f"
+ local dir_fmt="$rpath/dir%1.0f"
+
+ tst_rhost_run -s -c "touch \$(seq -f \"$file_fmt\" -s ' ' $FILE_COUNT)"
+ tst_rhost_run -s -c "mkdir \$(seq -f \"$dir_fmt\" -s ' ' $FILE_COUNT)"
+}
+
+do_test()
+{
+ local count
+
+ # Pass the list of files through `sort -u` in case `ls` doesn't fitler
+ # out potential duplicate filenames returned by buggy NFS
+ count=`ls | grep '^file' | sort -u | wc -l`
+
+ if [ $count -ne $FILE_COUNT ]; then
+ tst_res TFAIL "Listing files failed: $count != $FILE_COUNT"
+ return
+ fi
+
+ count=`ls | grep '^dir' | sort -u | wc -l`
+
+ if [ $count -ne $FILE_COUNT ]; then
+ tst_res TFAIL "Listing dirs failed: $count != $FILE_COUNT"
+ return
+ fi
+
+ tst_res TPASS "All files and directories were correctly listed"
+}
+
+tst_run
--
2.33.0
More information about the ltp
mailing list