All of lore.kernel.org
 help / color / mirror / Atom feed
* [LTP] [PATCH 1/3] nfs_lib.sh: Add nfs_get_remote_path()
@ 2021-11-18 17:23 Martin Doucha
  2021-11-18 17:23 ` [LTP] [PATCH 2/3] nfs_lib.sh: Add support for test-specific parameters Martin Doucha
  2021-11-18 17:23 ` [LTP] [PATCH 3/3] Add test for NFS directory listing regression Martin Doucha
  0 siblings, 2 replies; 4+ messages in thread
From: Martin Doucha @ 2021-11-18 17:23 UTC (permalink / raw)
  To: ltp

Sometimes it's necessary to manipulate remote NFS directory directly e.g.
to simulate external server activity. nfs_get_remote_path() will print
the remote path so that it can then be used by tst_rhost_run().

Signed-off-by: Martin Doucha <mdoucha@suse.cz>
---
 testcases/network/nfs/nfs_stress/nfs_lib.sh | 13 +++++++++++++
 1 file changed, 13 insertions(+)

diff --git a/testcases/network/nfs/nfs_stress/nfs_lib.sh b/testcases/network/nfs/nfs_stress/nfs_lib.sh
index 206f11fdd..790655643 100644
--- a/testcases/network/nfs/nfs_stress/nfs_lib.sh
+++ b/testcases/network/nfs/nfs_stress/nfs_lib.sh
@@ -52,6 +52,19 @@ get_socket_type()
 	done
 }
 
+nfs_get_remote_path()
+{
+	local v
+	local type=$(get_socket_type ${2:-0})
+
+	for v in $VERSION; do
+		break;
+	done
+
+	v=${1:-$v}
+	echo "$TST_TMPDIR/$v/$type"
+}
+
 nfs_server_udp_enabled()
 {
 	local config f
-- 
2.33.0


-- 
Mailing list info: https://lists.linux.it/listinfo/ltp

^ permalink raw reply related	[flat|nested] 4+ messages in thread

* [LTP] [PATCH 2/3] nfs_lib.sh: Add support for test-specific parameters
  2021-11-18 17:23 [LTP] [PATCH 1/3] nfs_lib.sh: Add nfs_get_remote_path() Martin Doucha
@ 2021-11-18 17:23 ` Martin Doucha
  2021-11-18 17:23 ` [LTP] [PATCH 3/3] Add test for NFS directory listing regression Martin Doucha
  1 sibling, 0 replies; 4+ messages in thread
From: Martin Doucha @ 2021-11-18 17:23 UTC (permalink / raw)
  To: ltp

Signed-off-by: Martin Doucha <mdoucha@suse.cz>
---
 testcases/network/nfs/nfs_stress/nfs_lib.sh | 4 +++-
 1 file changed, 3 insertions(+), 1 deletion(-)

diff --git a/testcases/network/nfs/nfs_stress/nfs_lib.sh b/testcases/network/nfs/nfs_stress/nfs_lib.sh
index 790655643..b01215136 100644
--- a/testcases/network/nfs/nfs_stress/nfs_lib.sh
+++ b/testcases/network/nfs/nfs_stress/nfs_lib.sh
@@ -19,10 +19,12 @@ nfs_parse_args()
 	case "$1" in
 	v) VERSION="$(echo $2 | tr ',' ' ')";;
 	t) SOCKET_TYPE="$(echo $2 | tr ',' ' ')";;
+	*) [ "$NFS_PARSE_ARGS_CALLER" ] && $NFS_PARSE_ARGS_CALLER "$@";;
 	esac
 }
 
-TST_OPTS="v:t:"
+NFS_PARSE_ARGS_CALLER="$TST_PARSE_ARGS"
+TST_OPTS="v:t:$TST_OPTS"
 TST_PARSE_ARGS=nfs_parse_args
 TST_USAGE=nfs_usage
 TST_NEEDS_TMPDIR=1
-- 
2.33.0


-- 
Mailing list info: https://lists.linux.it/listinfo/ltp

^ permalink raw reply related	[flat|nested] 4+ messages in thread

* [LTP] [PATCH 3/3] Add test for NFS directory listing regression
  2021-11-18 17:23 [LTP] [PATCH 1/3] nfs_lib.sh: Add nfs_get_remote_path() Martin Doucha
  2021-11-18 17:23 ` [LTP] [PATCH 2/3] nfs_lib.sh: Add support for test-specific parameters Martin Doucha
@ 2021-11-18 17:23 ` Martin Doucha
  2021-11-23  9:49   ` Petr Vorel
  1 sibling, 1 reply; 4+ messages in thread
From: Martin Doucha @ 2021-11-18 17:23 UTC (permalink / raw)
  To: ltp

---
 runtest/net.nfs                           | 11 +++++
 testcases/network/nfs/nfs_stress/Makefile |  3 +-
 testcases/network/nfs/nfs_stress/nfs07.sh | 56 +++++++++++++++++++++++
 3 files changed, 69 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..d8e482751
--- /dev/null
+++ b/testcases/network/nfs/nfs_stress/nfs07.sh
@@ -0,0 +1,56 @@
+#!/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
+
+do_setup()
+{
+	nfs_setup
+
+	local rpath=$(nfs_get_remote_path)
+	tst_rhost_run -s -c "touch $rpath/file{1..$FILE_COUNT}"
+	tst_rhost_run -s -c "mkdir $rpath/dir{1..$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


-- 
Mailing list info: https://lists.linux.it/listinfo/ltp

^ permalink raw reply related	[flat|nested] 4+ messages in thread

* Re: [LTP] [PATCH 3/3] Add test for NFS directory listing regression
  2021-11-18 17:23 ` [LTP] [PATCH 3/3] Add test for NFS directory listing regression Martin Doucha
@ 2021-11-23  9:49   ` Petr Vorel
  0 siblings, 0 replies; 4+ messages in thread
From: Petr Vorel @ 2021-11-23  9:49 UTC (permalink / raw)
  To: Martin Doucha; +Cc: ltp

Hi Martin,

Cc: Alexey
...
> +++ b/testcases/network/nfs/nfs_stress/Makefile
> @@ -15,6 +15,7 @@ INSTALL_TARGETS		:= nfs_lib.sh \
>  			   nfs03 \
>  			   nfs04 \
>  			   nfs05 \
> -			   nfs06
> +			   nfs06 \
> +			   nfs07.sh
+ 1 for .sh name, we should later add it to the rest of NFS shell scripts.

>  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..d8e482751
> --- /dev/null
> +++ b/testcases/network/nfs/nfs_stress/nfs07.sh
> @@ -0,0 +1,56 @@
> +#!/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
nit: nfs07.sh -h does not list this, would you care to add TST_USAGE?

> +}
> +
> +. nfs_lib.sh
> +
> +do_setup()
> +{
> +	nfs_setup
> +
> +	local rpath=$(nfs_get_remote_path)
> +	tst_rhost_run -s -c "touch $rpath/file{1..$FILE_COUNT}"
> +	tst_rhost_run -s -c "mkdir $rpath/dir{1..$FILE_COUNT}"
Unfortunately {1..$FILE_COUNT} is bashism (not work at least on dash).
Could you please rewrite it to using for cycle and seq?
It might be reasonably slower on bash, but working everywhere.

The rest LGTM, good idea to add this test.

Kind regards,
Petr

> +}
> +
> +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

-- 
Mailing list info: https://lists.linux.it/listinfo/ltp

^ permalink raw reply	[flat|nested] 4+ messages in thread

end of thread, other threads:[~2021-11-23  9:49 UTC | newest]

Thread overview: 4+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2021-11-18 17:23 [LTP] [PATCH 1/3] nfs_lib.sh: Add nfs_get_remote_path() Martin Doucha
2021-11-18 17:23 ` [LTP] [PATCH 2/3] nfs_lib.sh: Add support for test-specific parameters Martin Doucha
2021-11-18 17:23 ` [LTP] [PATCH 3/3] Add test for NFS directory listing regression Martin Doucha
2021-11-23  9:49   ` Petr Vorel

This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.