[LTP] [PATCH v2 3/3] Add test for NFS directory listing regression

Petr Vorel pvorel@suse.cz
Tue Nov 23 20:40:09 CET 2021


Hi Martin,

Reviewed-by: Petr Vorel <pvorel@suse.cz>

> 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"
I'd use $FILE_COUNT (safe to use as help is run before setup, thus -n is not
processed).

> +}
> +
> +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)"
+1, very nice

> +}
> +
> +do_test()
> +{
> +	local count
> +
> +	# Pass the list of files through `sort -u` in case `ls` doesn't fitler
typo: s/fitler/filter/

> +	# 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"
maybe mention $FILE_COUNT?
> +}
> +
> +tst_run

Reviewed-by: Petr Vorel <pvorel@suse.cz>

If you agree, I suggest to merge it with these changes:

diff --git testcases/network/nfs/nfs_stress/nfs07.sh testcases/network/nfs/nfs_stress/nfs07.sh
index 2c04746fa..e44573405 100755
--- testcases/network/nfs/nfs_stress/nfs07.sh
+++ testcases/network/nfs/nfs_stress/nfs07.sh
@@ -26,7 +26,7 @@ TST_USAGE="show_usage"
 show_usage()
 {
 	nfs_usage
-	echo "-n x    Create x files and x directories, default is 5000"
+	echo "-n x    Create x files and x directories, default is $FILE_COUNT"
 }
 
 do_setup()
@@ -45,7 +45,7 @@ do_test()
 {
 	local count
 
-	# Pass the list of files through `sort -u` in case `ls` doesn't fitler
+	# Pass the list of files through `sort -u` in case `ls` doesn't filter
 	# out potential duplicate filenames returned by buggy NFS
 	count=`ls | grep '^file' | sort -u | wc -l`
 
@@ -61,7 +61,7 @@ do_test()
 		return
 	fi
 
-	tst_res TPASS "All files and directories were correctly listed"
+	tst_res TPASS "All $FILE_COUNT files and directories were correctly listed"
 }
 
 tst_run


More information about the ltp mailing list