aboutsummaryrefslogtreecommitdiff
path: root/test/py/test_device_get_region_info.py
diff options
context:
space:
mode:
Diffstat (limited to 'test/py/test_device_get_region_info.py')
-rw-r--r--test/py/test_device_get_region_info.py65
1 files changed, 38 insertions, 27 deletions
diff --git a/test/py/test_device_get_region_info.py b/test/py/test_device_get_region_info.py
index c81d97b..4209cfb 100644
--- a/test/py/test_device_get_region_info.py
+++ b/test/py/test_device_get_region_info.py
@@ -35,6 +35,8 @@ import os
ctx = None
sock = None
+argsz = len(vfio_region_info())
+
def test_device_get_region_info_setup():
global ctx, sock
@@ -81,8 +83,9 @@ def test_device_get_region_info_short_write():
def test_device_get_region_info_bad_argsz():
- # struct vfio_region_info
- payload = struct.pack("IIIIQQ", 8, 0, VFU_PCI_DEV_BAR1_REGION_IDX, 0, 0, 0)
+ payload = vfio_region_info(argsz=8, flags=0,
+ index=VFU_PCI_DEV_BAR1_REGION_IDX, cap_offset=0,
+ size=0, offset=0)
hdr = vfio_user_header(VFIO_USER_DEVICE_GET_REGION_INFO, size=len(payload))
sock.send(hdr + payload)
@@ -91,7 +94,9 @@ def test_device_get_region_info_bad_argsz():
def test_device_get_region_info_bad_index():
- payload = struct.pack("IIIIQQ", 32, 0, VFU_PCI_DEV_NUM_REGIONS, 0, 0, 0)
+ payload = vfio_region_info(argsz=argsz, flags=0,
+ index=VFU_PCI_DEV_NUM_REGIONS, cap_offset=0,
+ size=0, offset=0)
hdr = vfio_user_header(VFIO_USER_DEVICE_GET_REGION_INFO, size=len(payload))
sock.send(hdr + payload)
@@ -100,37 +105,40 @@ def test_device_get_region_info_bad_index():
def test_device_get_region_info_larger_argsz():
- payload = struct.pack("IIIIQQ", 32 + 8, 0, VFU_PCI_DEV_BAR1_REGION_IDX,
- 0, 0, 0)
+ payload = vfio_region_info(argsz=argsz + 8, flags=0,
+ index=VFU_PCI_DEV_BAR1_REGION_IDX, cap_offset=0,
+ size=0, offset=0)
hdr = vfio_user_header(VFIO_USER_DEVICE_GET_REGION_INFO, size=len(payload))
sock.send(hdr + payload)
vfu_run_ctx(ctx)
result = get_reply(sock)
- assert(len(result) == 32)
+ assert(len(result) == argsz)
- info, _ = vfio_region_info(result)
+ info, _ = vfio_region_info.pop_from_buffer(result)
- assert info.argsz == 32
+ assert info.argsz == argsz
assert info.flags == (VFIO_REGION_INFO_FLAG_READ |
VFIO_REGION_INFO_FLAG_WRITE)
assert info.index == VFU_PCI_DEV_BAR1_REGION_IDX
- assert info.cap_off == 0
+ assert info.cap_offset == 0
assert info.size == 4096
assert info.offset == 0
def test_device_get_region_info_small_argsz_caps():
global sock
- payload = struct.pack("IIIIQQ", 32, 0, VFU_PCI_DEV_BAR2_REGION_IDX, 0, 0, 0)
+ payload = vfio_region_info(argsz=argsz, flags=0,
+ index=VFU_PCI_DEV_BAR2_REGION_IDX, cap_offset=0,
+ size=0, offset=0)
hdr = vfio_user_header(VFIO_USER_DEVICE_GET_REGION_INFO, size=len(payload))
sock.send(hdr + payload)
vfu_run_ctx(ctx)
result = get_reply(sock)
- info, _ = vfio_region_info(result)
+ info, _ = vfio_region_info.pop_from_buffer(result)
assert info.argsz == 80
assert info.flags == (VFIO_REGION_INFO_FLAG_READ |
@@ -138,7 +146,7 @@ def test_device_get_region_info_small_argsz_caps():
VFIO_REGION_INFO_FLAG_MMAP |
VFIO_REGION_INFO_FLAG_CAPS)
assert info.index == VFU_PCI_DEV_BAR2_REGION_IDX
- assert info.cap_off == 0
+ assert info.cap_offset == 0
assert info.size == 0x8000
assert info.offset == 0x8000
@@ -150,21 +158,23 @@ def test_device_get_region_info_caps():
sock = connect_client(ctx)
- payload = struct.pack("IIIIQQ", 80, 0, VFU_PCI_DEV_BAR2_REGION_IDX, 0, 0, 0)
- payload += b'\0' * (80 - 32)
+ payload = vfio_region_info(argsz=80, flags=0,
+ index=VFU_PCI_DEV_BAR2_REGION_IDX, cap_offset=0,
+ size=0, offset=0)
+ payload = bytes(payload) + b'\0' * (80 - 32)
hdr = vfio_user_header(VFIO_USER_DEVICE_GET_REGION_INFO, size=len(payload))
sock.send(hdr + payload)
vfu_run_ctx(ctx)
result = get_reply(sock)
- info, result = vfio_region_info(result)
- cap, result = vfio_region_info_cap_sparse_mmap(result)
- area1, result = vfio_region_sparse_mmap_area(result)
- area2, result = vfio_region_sparse_mmap_area(result)
+ info, result = vfio_region_info.pop_from_buffer(result)
+ cap, result = vfio_region_info_cap_sparse_mmap.pop_from_buffer(result)
+ area1, result = vfio_region_sparse_mmap_area.pop_from_buffer(result)
+ area2, result = vfio_region_sparse_mmap_area.pop_from_buffer(result)
assert info.argsz == 80
- assert info.cap_off == 32
+ assert info.cap_offset == 32
assert info.size == 0x8000
assert info.offset == 0x8000
@@ -186,22 +196,23 @@ def test_device_get_region_info_migr():
sock = connect_client(ctx)
- payload = struct.pack("IIIIQQ", 80, 0, VFU_PCI_DEV_MIGR_REGION_IDX,
- 0, 0, 0)
- payload += b'\0' * (80 - 32)
+ payload = vfio_region_info(argsz=80, flags=0,
+ index=VFU_PCI_DEV_MIGR_REGION_IDX, cap_offset=0,
+ size=0, offset=0)
+ payload = bytes(payload) + b'\0' * (80 - 32)
hdr = vfio_user_header(VFIO_USER_DEVICE_GET_REGION_INFO, size=len(payload))
sock.send(hdr + payload)
vfu_run_ctx(ctx)
result = get_reply(sock)
- info, result = vfio_region_info(result)
- mcap, result = vfio_region_info_cap_type(result)
- cap, result = vfio_region_info_cap_sparse_mmap(result)
- area, result = vfio_region_sparse_mmap_area(result)
+ info, result = vfio_region_info.pop_from_buffer(result)
+ mcap, result = vfio_region_info_cap_type.pop_from_buffer(result)
+ cap, result = vfio_region_info_cap_sparse_mmap.pop_from_buffer(result)
+ area, result = vfio_region_sparse_mmap_area.pop_from_buffer(result)
assert info.argsz == 80
- assert info.cap_off == 32
+ assert info.cap_offset == 32
assert mcap.id == VFIO_REGION_INFO_CAP_TYPE
assert mcap.version == 1