Nir Soffer
2021-Mar-01 16:41 UTC
[Libguestfs] [PATCH libnbd] copy: Test --request-size option
On Mon, Mar 1, 2021 at 6:38 PM Richard W.M. Jones <rjones at redhat.com> wrote:> > On Mon, Mar 01, 2021 at 06:35:04PM +0200, Nir Soffer wrote: > > Add simple test similar to copy-sparse-no-extents testing that > > --request-size is respected. > > > > Signed-off-by: Nir Soffer <nsoffer at redhat.com> > > --- > > copy/Makefile.am | 2 + > > copy/copy-sparse-request-size.sh | 92 ++++++++++++++++++++++++++++++++ > > 2 files changed, 94 insertions(+) > > create mode 100755 copy/copy-sparse-request-size.sh > > > > diff --git a/copy/Makefile.am b/copy/Makefile.am > > index c8b28ac..d85ceff 100644 > > --- a/copy/Makefile.am > > +++ b/copy/Makefile.am > > @@ -36,6 +36,7 @@ EXTRA_DIST = \ > > copy-sparse.sh \ > > copy-sparse-allocated.sh \ > > copy-sparse-no-extents.sh \ > > + copy-sparse-request-size.sh \ > > copy-sparse-to-stream.sh \ > > copy-stdin-to-nbd.sh \ > > copy-stdin-to-null.sh \ > > @@ -122,6 +123,7 @@ TESTS += \ > > copy-sparse.sh \ > > copy-sparse-allocated.sh \ > > copy-sparse-no-extents.sh \ > > + copy-sparse-request-size.sh \ > > copy-sparse-to-stream.sh \ > > $(ROOT_TESTS) \ > > test-long-options.sh \ > > diff --git a/copy/copy-sparse-request-size.sh b/copy/copy-sparse-request-size.sh > > new file mode 100755 > > index 0000000..b539f5e > > --- /dev/null > > +++ b/copy/copy-sparse-request-size.sh > > @@ -0,0 +1,92 @@ > > +#!/usr/bin/env bash > > +# nbd client library in userspace > > +# Copyright (C) 2021 Red Hat Inc. > > +# > > +# This library is free software; you can redistribute it and/or > > +# modify it under the terms of the GNU Lesser General Public > > +# License as published by the Free Software Foundation; either > > +# version 2 of the License, or (at your option) any later version. > > +# > > +# This library is distributed in the hope that it will be useful, > > +# but WITHOUT ANY WARRANTY; without even the implied warranty of > > +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU > > +# Lesser General Public License for more details. > > +# > > +# You should have received a copy of the GNU Lesser General Public > > +# License along with this library; if not, write to the Free Software > > +# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA > > + > > +# Adapted from copy-sparse-no-extents.sh > > +# > > +# This test depends on the nbdkit default sparse block size (32K). > > + > > +. ../tests/functions.sh > > + > > +set -e > > +set -x > > + > > +# Skip this test under valgrind, it takes too long. > > +if [ "x$LIBNBD_VALGRIND" = "x1" ]; then > > + echo "$0: test skipped under valgrind" > > + exit 77 > > +fi > > + > > +requires nbdkit --version > > +requires nbdkit --exit-with-parent --version > > +requires nbdkit data --version > > +requires nbdkit eval --version > > + > > +out=copy-sparse-request-size.out > > Copy and paste problem - unless temporary files have a unique name > they will conflict when we run the tests in parallel (which we do > normally).Isn't "copy-sparse-request-size.out" unique?> > Rich. > > > +cleanup_fn rm -f $out > > + > > +$VG nbdcopy --no-extents -S 0 --request-size=1048576 -- \ > > + [ nbdkit --exit-with-parent data data=' > > + 1 > > + @33554431 1 > > + ' ] \ > > + [ nbdkit --exit-with-parent eval \ > > + get_size=' echo 33554432 ' \ > > + pwrite=" echo \$@ >> $out " \ > > + trim=" echo \$@ >> $out " \ > > + zero=" echo \$@ >> $out " ] > > + > > +sort -n -o $out $out > > + > > +echo Output: > > +cat $out > > + > > +if [ "$(cat $out)" != "pwrite 1048576 0 > > +pwrite 1048576 1048576 > > +pwrite 1048576 10485760 > > +pwrite 1048576 11534336 > > +pwrite 1048576 12582912 > > +pwrite 1048576 13631488 > > +pwrite 1048576 14680064 > > +pwrite 1048576 15728640 > > +pwrite 1048576 16777216 > > +pwrite 1048576 17825792 > > +pwrite 1048576 18874368 > > +pwrite 1048576 19922944 > > +pwrite 1048576 2097152 > > +pwrite 1048576 20971520 > > +pwrite 1048576 22020096 > > +pwrite 1048576 23068672 > > +pwrite 1048576 24117248 > > +pwrite 1048576 25165824 > > +pwrite 1048576 26214400 > > +pwrite 1048576 27262976 > > +pwrite 1048576 28311552 > > +pwrite 1048576 29360128 > > +pwrite 1048576 30408704 > > +pwrite 1048576 3145728 > > +pwrite 1048576 31457280 > > +pwrite 1048576 32505856 > > +pwrite 1048576 4194304 > > +pwrite 1048576 5242880 > > +pwrite 1048576 6291456 > > +pwrite 1048576 7340032 > > +pwrite 1048576 8388608 > > +pwrite 1048576 9437184" ]; then > > + echo "$0: output does not match expected" > > + exit 1 > > +fi > > -- > > 2.26.2 > > -- > Richard Jones, Virtualization Group, Red Hat http://people.redhat.com/~rjones > Read my programming and virtualization blog: http://rwmj.wordpress.com > virt-top is 'top' for virtual machines. Tiny program with many > powerful monitoring features, net stats, disk stats, logging, etc. > http://people.redhat.com/~rjones/virt-top >
Richard W.M. Jones
2021-Mar-01 16:46 UTC
[Libguestfs] [PATCH libnbd] copy: Test --request-size option
On Mon, Mar 01, 2021 at 06:41:43PM +0200, Nir Soffer wrote:> On Mon, Mar 1, 2021 at 6:38 PM Richard W.M. Jones <rjones at redhat.com> wrote: > > > > On Mon, Mar 01, 2021 at 06:35:04PM +0200, Nir Soffer wrote: > > > Add simple test similar to copy-sparse-no-extents testing that > > > --request-size is respected. > > > > > > Signed-off-by: Nir Soffer <nsoffer at redhat.com> > > > --- > > > copy/Makefile.am | 2 + > > > copy/copy-sparse-request-size.sh | 92 ++++++++++++++++++++++++++++++++ > > > 2 files changed, 94 insertions(+) > > > create mode 100755 copy/copy-sparse-request-size.sh > > > > > > diff --git a/copy/Makefile.am b/copy/Makefile.am > > > index c8b28ac..d85ceff 100644 > > > --- a/copy/Makefile.am > > > +++ b/copy/Makefile.am > > > @@ -36,6 +36,7 @@ EXTRA_DIST = \ > > > copy-sparse.sh \ > > > copy-sparse-allocated.sh \ > > > copy-sparse-no-extents.sh \ > > > + copy-sparse-request-size.sh \ > > > copy-sparse-to-stream.sh \ > > > copy-stdin-to-nbd.sh \ > > > copy-stdin-to-null.sh \ > > > @@ -122,6 +123,7 @@ TESTS += \ > > > copy-sparse.sh \ > > > copy-sparse-allocated.sh \ > > > copy-sparse-no-extents.sh \ > > > + copy-sparse-request-size.sh \ > > > copy-sparse-to-stream.sh \ > > > $(ROOT_TESTS) \ > > > test-long-options.sh \ > > > diff --git a/copy/copy-sparse-request-size.sh b/copy/copy-sparse-request-size.sh > > > new file mode 100755 > > > index 0000000..b539f5e > > > --- /dev/null > > > +++ b/copy/copy-sparse-request-size.sh > > > @@ -0,0 +1,92 @@ > > > +#!/usr/bin/env bash > > > +# nbd client library in userspace > > > +# Copyright (C) 2021 Red Hat Inc. > > > +# > > > +# This library is free software; you can redistribute it and/or > > > +# modify it under the terms of the GNU Lesser General Public > > > +# License as published by the Free Software Foundation; either > > > +# version 2 of the License, or (at your option) any later version. > > > +# > > > +# This library is distributed in the hope that it will be useful, > > > +# but WITHOUT ANY WARRANTY; without even the implied warranty of > > > +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU > > > +# Lesser General Public License for more details. > > > +# > > > +# You should have received a copy of the GNU Lesser General Public > > > +# License along with this library; if not, write to the Free Software > > > +# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA > > > + > > > +# Adapted from copy-sparse-no-extents.sh > > > +# > > > +# This test depends on the nbdkit default sparse block size (32K). > > > + > > > +. ../tests/functions.sh > > > + > > > +set -e > > > +set -x > > > + > > > +# Skip this test under valgrind, it takes too long. > > > +if [ "x$LIBNBD_VALGRIND" = "x1" ]; then > > > + echo "$0: test skipped under valgrind" > > > + exit 77 > > > +fi > > > + > > > +requires nbdkit --version > > > +requires nbdkit --exit-with-parent --version > > > +requires nbdkit data --version > > > +requires nbdkit eval --version > > > + > > > +out=copy-sparse-request-size.out > > > > Copy and paste problem - unless temporary files have a unique name > > they will conflict when we run the tests in parallel (which we do > > normally). > > Isn't "copy-sparse-request-size.out" unique?Sorry, yes it's totally fine. I misread it as copy-sparse.out from the original file. Rich.> > > > Rich. > > > > > +cleanup_fn rm -f $out > > > + > > > +$VG nbdcopy --no-extents -S 0 --request-size=1048576 -- \ > > > + [ nbdkit --exit-with-parent data data=' > > > + 1 > > > + @33554431 1 > > > + ' ] \ > > > + [ nbdkit --exit-with-parent eval \ > > > + get_size=' echo 33554432 ' \ > > > + pwrite=" echo \$@ >> $out " \ > > > + trim=" echo \$@ >> $out " \ > > > + zero=" echo \$@ >> $out " ] > > > + > > > +sort -n -o $out $out > > > + > > > +echo Output: > > > +cat $out > > > + > > > +if [ "$(cat $out)" != "pwrite 1048576 0 > > > +pwrite 1048576 1048576 > > > +pwrite 1048576 10485760 > > > +pwrite 1048576 11534336 > > > +pwrite 1048576 12582912 > > > +pwrite 1048576 13631488 > > > +pwrite 1048576 14680064 > > > +pwrite 1048576 15728640 > > > +pwrite 1048576 16777216 > > > +pwrite 1048576 17825792 > > > +pwrite 1048576 18874368 > > > +pwrite 1048576 19922944 > > > +pwrite 1048576 2097152 > > > +pwrite 1048576 20971520 > > > +pwrite 1048576 22020096 > > > +pwrite 1048576 23068672 > > > +pwrite 1048576 24117248 > > > +pwrite 1048576 25165824 > > > +pwrite 1048576 26214400 > > > +pwrite 1048576 27262976 > > > +pwrite 1048576 28311552 > > > +pwrite 1048576 29360128 > > > +pwrite 1048576 30408704 > > > +pwrite 1048576 3145728 > > > +pwrite 1048576 31457280 > > > +pwrite 1048576 32505856 > > > +pwrite 1048576 4194304 > > > +pwrite 1048576 5242880 > > > +pwrite 1048576 6291456 > > > +pwrite 1048576 7340032 > > > +pwrite 1048576 8388608 > > > +pwrite 1048576 9437184" ]; then > > > + echo "$0: output does not match expected" > > > + exit 1 > > > +fi > > > -- > > > 2.26.2 > > > > -- > > Richard Jones, Virtualization Group, Red Hat http://people.redhat.com/~rjones > > Read my programming and virtualization blog: http://rwmj.wordpress.com > > virt-top is 'top' for virtual machines. Tiny program with many > > powerful monitoring features, net stats, disk stats, logging, etc. > > http://people.redhat.com/~rjones/virt-top > >-- Richard Jones, Virtualization Group, Red Hat http://people.redhat.com/~rjones Read my programming and virtualization blog: http://rwmj.wordpress.com Fedora Windows cross-compiler. Compile Windows programs, test, and build Windows installers. Over 100 libraries supported. http://fedoraproject.org/wiki/MinGW