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(a)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).
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