[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