Message ID | 20211123151537.14913-3-mdoucha@suse.cz |
---|---|
State | Accepted |
Headers | show |
Series | [v2,1/3] nfs_lib.sh: Add nfs_get_remote_path() | expand |
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
On 23. 11. 21 20:40, Petr Vorel wrote: > 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" > } If you run `nfs07.sh -hn 123`, your version will print that the default is 123. > > 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" > } That would make the line over 80 characters and the number isn't that important. Let's fix just the "fitler" typo.
Hi Martin, > > - 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" > > } > If you run `nfs07.sh -hn 123`, your version will print that the default > is 123. Out of curiosity (as it's not anything important) not sure what's wrong on my side (I tested it before I suggested it, I also reinstalled LTP to make sure it's updated), but it works as expected: # PATH="/opt/ltp/testcases/bin:$PATH" ./nfs07.sh -hn 123 nfs07 1 TINFO: initialize 'lhost' 'ltp_ns_veth2' interface nfs07 1 TINFO: add local addr 10.0.0.2/24 nfs07 1 TINFO: add local addr fd00:1:1:1::2/64 nfs07 1 TINFO: initialize 'rhost' 'ltp_ns_veth1' interface nfs07 1 TINFO: add remote addr 10.0.0.1/24 nfs07 1 TINFO: add remote addr fd00:1:1:1::1/64 nfs07 1 TINFO: Network config (local -- remote): nfs07 1 TINFO: ltp_ns_veth2 -- ltp_ns_veth1 nfs07 1 TINFO: 10.0.0.2/24 -- 10.0.0.1/24 nfs07 1 TINFO: fd00:1:1:1::2/64 -- fd00:1:1:1::1/64 -t x Socket type, tcp or udp, default is udp -v x NFS version, default is '3' -n x Create x files and x directories, default is 5000 -h Prints this help -i n Execute test n times > > 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" > > } > That would make the line over 80 characters and the number isn't that > important. Let's fix just the "fitler" typo. I don't consider 80 as an issue as long as it's not over 100 chars (barier increased also in mainline checkpatch.pl), but sure, these are really minor issues, thus agree to fix just the typo. Waiting little longer if Alexey has any comments and then merge. Thanks a lot for very useful test case! Kind regards, Petr
On 24. 11. 21 10:50, Petr Vorel wrote: > Hi Martin, > >>> - 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" >>> } > >> If you run `nfs07.sh -hn 123`, your version will print that the default >> is 123. > > Out of curiosity (as it's not anything important) not sure what's wrong on my > side (I tested it before I suggested it, I also reinstalled LTP to make sure > it's updated), but it works as expected: Ah, sorry, I've put the arguments in the wrong order. `nfs07.sh -n 123 -h` will overwrite $FILE_COUNT before printing usage info.
> On 24. 11. 21 10:50, Petr Vorel wrote: > > Hi Martin, > >>> - 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" > >>> } > >> If you run `nfs07.sh -hn 123`, your version will print that the default > >> is 123. > > Out of curiosity (as it's not anything important) not sure what's wrong on my > > side (I tested it before I suggested it, I also reinstalled LTP to make sure > > it's updated), but it works as expected: > Ah, sorry, I've put the arguments in the wrong order. > `nfs07.sh -n 123 -h` will overwrite $FILE_COUNT before printing usage info. Ah, correct, thanks! I should have figured this out myself. Kind regards, Petr
On 24.11.2021 12:50, Petr Vorel wrote: > Hi Martin, > >>> - 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" >>> } > >> If you run `nfs07.sh -hn 123`, your version will print that the default >> is 123. > > Out of curiosity (as it's not anything important) not sure what's wrong on my > side (I tested it before I suggested it, I also reinstalled LTP to make sure > it's updated), but it works as expected: > > # PATH="/opt/ltp/testcases/bin:$PATH" ./nfs07.sh -hn 123 > nfs07 1 TINFO: initialize 'lhost' 'ltp_ns_veth2' interface > nfs07 1 TINFO: add local addr 10.0.0.2/24 > nfs07 1 TINFO: add local addr fd00:1:1:1::2/64 > nfs07 1 TINFO: initialize 'rhost' 'ltp_ns_veth1' interface > nfs07 1 TINFO: add remote addr 10.0.0.1/24 > nfs07 1 TINFO: add remote addr fd00:1:1:1::1/64 > nfs07 1 TINFO: Network config (local -- remote): > nfs07 1 TINFO: ltp_ns_veth2 -- ltp_ns_veth1 > nfs07 1 TINFO: 10.0.0.2/24 -- 10.0.0.1/24 > nfs07 1 TINFO: fd00:1:1:1::2/64 -- fd00:1:1:1::1/64 > -t x Socket type, tcp or udp, default is udp > -v x NFS version, default is '3' > -n x Create x files and x directories, default is 5000 > -h Prints this help > -i n Execute test n times > >>> 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" >>> } > >> That would make the line over 80 characters and the number isn't that >> important. Let's fix just the "fitler" typo. > I don't consider 80 as an issue as long as it's not over 100 chars (barier > increased also in mainline checkpatch.pl), but sure, these are really minor > issues, thus agree to fix just the typo. > > Waiting little longer if Alexey has any comments and then merge. Hi Petr, Martin Overall the new test looks good, and I would only replace the old style command substitution count=`ls ...` with count=$(ls ...). Thanks, Alexey > > Thanks a lot for very useful test case! > > Kind regards, > Petr >
On 24. 11. 21 15:07, Alexey Kodanev wrote: > Hi Petr, Martin > > Overall the new test looks good, and I would only replace the old style > command substitution count=`ls ...` with count=$(ls ...). Good idea.
Hi Martin, Alexey, > On 24. 11. 21 15:07, Alexey Kodanev wrote: > > Hi Petr, Martin > > Overall the new test looks good, and I would only replace the old style > > command substitution count=`ls ...` with count=$(ls ...). +1, thanks for a review. > Good idea. I'll do that before merging this (later today). Kind regards, Petr
Hi Martin, Alexey, FYI merged. Thanks! Kind regards, Petr
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