On Mon, Jun 06, 2022 at 09:08:28PM -0500, Eric Blake wrote:
Add some more coverage of existing behavior, so we can better track
that we are not introducing unintended changes in upcoming patches.
---
python/t/500-aio-pread.py | 83 +++++++++++++++++++++++++++++++++++---
python/t/510-aio-pwrite.py | 6 +++
2 files changed, 84 insertions(+), 5 deletions(-)
diff --git a/python/t/500-aio-pread.py b/python/t/500-aio-pread.py
index fc1abad..c236163 100644
--- a/python/t/500-aio-pread.py
+++ b/python/t/500-aio-pread.py
@@ -1,5 +1,5 @@
# libnbd Python bindings
-# Copyright (C) 2010-2019 Red Hat Inc.
+# Copyright (C) 2010-2022 Red Hat Inc.
#
# This program is free software; you can redistribute it and/or modify
# it under the terms of the GNU General Public License as published by
@@ -19,17 +19,25 @@ import nbd
h = nbd.NBD()
h.connect_command(["nbdkit", "-s", "--exit-with-parent",
"-v",
- "pattern", "size=512"])
+ "pattern", "size=1024"])
buf = nbd.Buffer(512)
cookie = h.aio_pread(buf, 0)
while not h.aio_command_completed(cookie):
h.poll(-1)
-buf = buf.to_bytearray()
+buf1 = buf.to_bytearray()
-print("%r" % buf)
+# Prove that .to_bytearray() defaults to copying, even if buf is reused
-assert buf == (b'\x00\x00\x00\x00\x00\x00\x00\x00'
+cookie = h.aio_pread(buf, 512)
+while not h.aio_command_completed(cookie):
+ h.poll(-1)
+
+buf2 = buf.to_bytearray()
+
+print("%r" % buf1)
+
+assert buf1 == (b'\x00\x00\x00\x00\x00\x00\x00\x00'
+ b'\x00\x00\x00\x00\x00\x00\x00\x08'
+ b'\x00\x00\x00\x00\x00\x00\x00\x10'
+ b'\x00\x00\x00\x00\x00\x00\x00\x18'
@@ -93,3 +101,68 @@ assert buf == (b'\x00\x00\x00\x00\x00\x00\x00\x00'
+ b'\x00\x00\x00\x00\x00\x00\x01\xe8'
+ b'\x00\x00\x00\x00\x00\x00\x01\xf0'
+ b'\x00\x00\x00\x00\x00\x00\x01\xf8')
+
+assert buf2 == (b'\x00\x00\x00\x00\x00\x00\x02\x00'
+ + b'\x00\x00\x00\x00\x00\x00\x02\x08'
+ + b'\x00\x00\x00\x00\x00\x00\x02\x10'
+ + b'\x00\x00\x00\x00\x00\x00\x02\x18'
+ + b'\x00\x00\x00\x00\x00\x00\x02 '
+ + b'\x00\x00\x00\x00\x00\x00\x02('
+ + b'\x00\x00\x00\x00\x00\x00\x020'
+ + b'\x00\x00\x00\x00\x00\x00\x028'
+ + b'\x00\x00\x00\x00\x00\x00\x02@'
+ + b'\x00\x00\x00\x00\x00\x00\x02H'
+ + b'\x00\x00\x00\x00\x00\x00\x02P'
+ + b'\x00\x00\x00\x00\x00\x00\x02X'
+ + b'\x00\x00\x00\x00\x00\x00\x02`'
+ + b'\x00\x00\x00\x00\x00\x00\x02h'
+ + b'\x00\x00\x00\x00\x00\x00\x02p'
+ + b'\x00\x00\x00\x00\x00\x00\x02x'
+ + b'\x00\x00\x00\x00\x00\x00\x02\x80'
+ + b'\x00\x00\x00\x00\x00\x00\x02\x88'
+ + b'\x00\x00\x00\x00\x00\x00\x02\x90'
+ + b'\x00\x00\x00\x00\x00\x00\x02\x98'
+ + b'\x00\x00\x00\x00\x00\x00\x02\xa0'
+ + b'\x00\x00\x00\x00\x00\x00\x02\xa8'
+ + b'\x00\x00\x00\x00\x00\x00\x02\xb0'
+ + b'\x00\x00\x00\x00\x00\x00\x02\xb8'
+ + b'\x00\x00\x00\x00\x00\x00\x02\xc0'
+ + b'\x00\x00\x00\x00\x00\x00\x02\xc8'
+ + b'\x00\x00\x00\x00\x00\x00\x02\xd0'
+ + b'\x00\x00\x00\x00\x00\x00\x02\xd8'
+ + b'\x00\x00\x00\x00\x00\x00\x02\xe0'
+ + b'\x00\x00\x00\x00\x00\x00\x02\xe8'
+ + b'\x00\x00\x00\x00\x00\x00\x02\xf0'
+ + b'\x00\x00\x00\x00\x00\x00\x02\xf8'
+ + b'\x00\x00\x00\x00\x00\x00\x03\x00'
+ + b'\x00\x00\x00\x00\x00\x00\x03\x08'
+ + b'\x00\x00\x00\x00\x00\x00\x03\x10'
+ + b'\x00\x00\x00\x00\x00\x00\x03\x18'
+ + b'\x00\x00\x00\x00\x00\x00\x03 '
+ + b'\x00\x00\x00\x00\x00\x00\x03('
+ + b'\x00\x00\x00\x00\x00\x00\x030'
+ + b'\x00\x00\x00\x00\x00\x00\x038'
+ + b'\x00\x00\x00\x00\x00\x00\x03@'
+ + b'\x00\x00\x00\x00\x00\x00\x03H'
+ + b'\x00\x00\x00\x00\x00\x00\x03P'
+ + b'\x00\x00\x00\x00\x00\x00\x03X'
+ + b'\x00\x00\x00\x00\x00\x00\x03`'
+ + b'\x00\x00\x00\x00\x00\x00\x03h'
+ + b'\x00\x00\x00\x00\x00\x00\x03p'
+ + b'\x00\x00\x00\x00\x00\x00\x03x'
+ + b'\x00\x00\x00\x00\x00\x00\x03\x80'
+ + b'\x00\x00\x00\x00\x00\x00\x03\x88'
+ + b'\x00\x00\x00\x00\x00\x00\x03\x90'
+ + b'\x00\x00\x00\x00\x00\x00\x03\x98'
+ + b'\x00\x00\x00\x00\x00\x00\x03\xa0'
+ + b'\x00\x00\x00\x00\x00\x00\x03\xa8'
+ + b'\x00\x00\x00\x00\x00\x00\x03\xb0'
+ + b'\x00\x00\x00\x00\x00\x00\x03\xb8'
+ + b'\x00\x00\x00\x00\x00\x00\x03\xc0'
+ + b'\x00\x00\x00\x00\x00\x00\x03\xc8'
+ + b'\x00\x00\x00\x00\x00\x00\x03\xd0'
+ + b'\x00\x00\x00\x00\x00\x00\x03\xd8'
+ + b'\x00\x00\x00\x00\x00\x00\x03\xe0'
+ + b'\x00\x00\x00\x00\x00\x00\x03\xe8'
+ + b'\x00\x00\x00\x00\x00\x00\x03\xf0'
+ + b'\x00\x00\x00\x00\x00\x00\x03\xf8')
diff --git a/python/t/510-aio-pwrite.py b/python/t/510-aio-pwrite.py
index 89599fc..d09e249 100644
--- a/python/t/510-aio-pwrite.py
+++ b/python/t/510-aio-pwrite.py
@@ -45,6 +45,12 @@ while not h.aio_command_completed(cookie):
assert buf == buf2.to_bytearray()
+# Check that .from_bytearray() defaults to copying
+buf[511] = 0x55
+assert buf != buf1.to_bytearray()
+buf[511] = 0xAA
+assert buf == buf1.to_bytearray()
+
with open(datafile, "rb") as f:
content = f.read()
Reviewed-by: Richard W.M. Jones <rjones(a)redhat.com>
Rich.
--
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