[Libguestfs] [nbdkit PATCH] tests: Check that cache-min-block-size works properly

Richard W.M. Jones rjones at redhat.com
Fri Aug 6 12:19:23 UTC 2021


On Fri, Aug 06, 2021 at 02:07:37PM +0200, Martin Kletzander wrote:
> On Wed, Aug 04, 2021 at 04:48:08PM +0100, Richard W.M. Jones wrote:
> >On Wed, Aug 04, 2021 at 05:08:32PM +0200, Martin Kletzander wrote:
> >>Signed-off-by: Martin Kletzander <mkletzan at redhat.com>
> >>---
> >> tests/test-cache-block-size.sh | 33 ++++++++++++++++++++++-----------
> >> 1 file changed, 22 insertions(+), 11 deletions(-)
> >>
> >>diff --git a/tests/test-cache-block-size.sh b/tests/test-cache-block-size.sh
> >>index d20cc94002b6..5e83ebc1cfaa 100755
> >>--- a/tests/test-cache-block-size.sh
> >>+++ b/tests/test-cache-block-size.sh
> >>@@ -47,24 +47,35 @@ truncate -s 128K cache-block-size.img
> >>
> >> # Run nbdkit with the caching filter.
> >> start_nbdkit -P cache-block-size.pid -U $sock --filter=cache \
> >>-             file cache-block-size.img cache-min-block-size=4K
> >>+             file cache-block-size.img cache-min-block-size=64K \
> >
> >Because of commit c1905b0a2 ("cache, cow: Use a 64K block size by
> >default"), 64K is the default block size.  So this doesn't test that
> >the parameter works.  Maybe choose a different block size here?
> >
> 
> I tried that it fails with 32K, but I can double all the numbers in this
> test if you want.

It fails even after adjusting the test to cope with the different
block size?

Rich.

> >Rest of it is fine, so ACK, but better if the block size above was
> >changed.
> >
> >Rich.
> >
> >>+             cache-on-read=true
> >>
> >> nbdsh --connect "nbd+unix://?socket=$sock" \
> >>       -c '
> >>-# Write some pattern data to the overlay and check it reads back OK.
> >>-buf = b"abcd" * 16384
> >>-h.pwrite(buf, 32768)
> >>+# Read half of cache-min-block-size
> >>+
> >> zero = h.pread(32768, 0)
> >> assert zero == bytearray(32768)
> >>-buf2 = h.pread(65536, 32768)
> >>-assert buf == buf2
> >>
> >>-# Flushing should write through to the underlying file.
> >>-h.flush()
> >>+buf = b"abcd" * 8192
> >>
> >>+# Write past the first read
> >>+with open("cache-block-size.img", "wb") as file:
> >>+    file.seek(32768)
> >>+    file.write(buf * 2)
> >>+    file.truncate(131072)
> >>+
> >>+# Check that it got written
> >> with open("cache-block-size.img", "rb") as file:
> >>-    zero = file.read(32768)
> >>-    assert zero == bytearray(32768)
> >>+    file.seek(32768)
> >>     buf2 = file.read(65536)
> >>-    assert buf == buf2
> >>+    assert (buf * 2) == buf2
> >>+
> >>+# Now read the rest of the cache-min-block-size, it should stay empty
> >>+zero = h.pread(32768, 32768)
> >>+assert zero == bytearray(32768)
> >>+
> >>+# Read past that, the pattern should be visible there
> >>+buf2 = h.pread(32768, 65536)
> >>+assert buf == buf2
> >> '
> >>--
> >>2.32.0
> >
> >-- 
> >Richard Jones, Virtualization Group, Red Hat http://people.redhat.com/~rjones
> >Read my programming and virtualization blog: http://rwmj.wordpress.com
> >virt-p2v converts physical machines to virtual machines.  Boot with a
> >live CD or over the network (PXE) and turn machines into KVM guests.
> >http://libguestfs.org/virt-v2v
> >



-- 
Richard Jones, Virtualization Group, Red Hat http://people.redhat.com/~rjones
Read my programming and virtualization blog: http://rwmj.wordpress.com
virt-p2v converts physical machines to virtual machines.  Boot with a
live CD or over the network (PXE) and turn machines into KVM guests.
http://libguestfs.org/virt-v2v




More information about the Libguestfs mailing list