diff --git a/tests/functional/pyocf/types/io.py b/tests/functional/pyocf/types/io.py index 0c7d692..dbd0d40 100644 --- a/tests/functional/pyocf/types/io.py +++ b/tests/functional/pyocf/types/io.py @@ -1,5 +1,6 @@ # # Copyright(c) 2019-2022 Intel Corporation +# Copyright(c) 2024 Huawei Technologies # SPDX-License-Identifier: BSD-3-Clause # @@ -18,6 +19,7 @@ from enum import IntEnum from ..ocf import OcfLib from .data import Data +from .shared import OcfCompletion class IoDir(IntEnum): @@ -113,6 +115,29 @@ class Io(Structure): OcfLib.getInstance().ocf_io_set_data(byref(self), data, offset) +class Sync: + def __init__(self, io: Io) -> None: + self.io = io + + def sync_submit(self, submit_method): + if getattr(self.io, 'callback', None): + raise Exception("completion callback is already set") + cmpl = OcfCompletion([("err", c_int)]) + self.io.callback = cmpl.callback + submit_method() + cmpl.wait() + return cmpl + + def submit(self): + return self.sync_submit(self.io.submit) + + def submit_flush(self): + return self.sync_submit(self.io.submit_flush) + + def submit_discard(self): + return self.sync_submit(self.io.submit_discard) + + IoOps.SET_DATA = CFUNCTYPE(c_int, POINTER(Io), c_void_p, c_uint32) IoOps.GET_DATA = CFUNCTYPE(c_void_p, POINTER(Io)) diff --git a/tests/functional/tests/basic/test_pyocf.py b/tests/functional/tests/basic/test_pyocf.py index ac2c3ac..b209b53 100644 --- a/tests/functional/tests/basic/test_pyocf.py +++ b/tests/functional/tests/basic/test_pyocf.py @@ -1,19 +1,19 @@ # # Copyright(c) 2019-2022 Intel Corporation +# Copyright(c) 2024 Huawei Technologies # SPDX-License-Identifier: BSD-3-Clause # import pytest -from ctypes import c_int from pyocf.types.cache import Cache from pyocf.types.core import Core from pyocf.types.volume import RamVolume, ErrorDevice from pyocf.types.volume_core import CoreVolume from pyocf.types.data import Data -from pyocf.types.io import IoDir +from pyocf.types.io import IoDir, Sync from pyocf.utils import Size as S -from pyocf.types.shared import OcfError, OcfCompletion +from pyocf.types.shared import OcfError from pyocf.rio import Rio, ReadWrite @@ -100,10 +100,7 @@ def test_load_cache_with_cores(pyocf_ctx, open_cores): ) io.set_data(write_data) - cmpl = OcfCompletion([("err", c_int)]) - io.callback = cmpl.callback - io.submit() - cmpl.wait() + Sync(io).submit() vol.close() cache.stop() @@ -121,10 +118,7 @@ def test_load_cache_with_cores(pyocf_ctx, open_cores): io = vol.new_io(cache.get_default_queue(), S.from_sector(3).B, read_data.size, IoDir.READ, 0, 0) io.set_data(read_data) - cmpl = OcfCompletion([("err", c_int)]) - io.callback = cmpl.callback - io.submit() - cmpl.wait() + Sync(io).submit() vol.close() assert read_data.md5() == write_data.md5() diff --git a/tests/functional/tests/engine/test_flush.py b/tests/functional/tests/engine/test_flush.py index c425668..569779a 100644 --- a/tests/functional/tests/engine/test_flush.py +++ b/tests/functional/tests/engine/test_flush.py @@ -1,17 +1,16 @@ # # Copyright(c) 2022-2022 Intel Corporation -# SPDX-License-Identifier: BSD-3-Clause-Clear +# Copyright(c) 2024 Huawei Technologies +# SPDX-License-Identifier: BSD-3-Clause # -from ctypes import c_int from pyocf.types.cache import Cache from pyocf.types.data import Data from pyocf.types.core import Core -from pyocf.types.io import IoDir +from pyocf.types.io import IoDir, Sync from pyocf.types.volume import RamVolume, IoFlags, TraceDevice from pyocf.types.volume_core import CoreVolume from pyocf.utils import Size -from pyocf.types.shared import OcfCompletion def test_flush_propagation(pyocf_ctx): @@ -46,13 +45,10 @@ def test_flush_propagation(pyocf_ctx): vol.open() io = vol.new_io(queue, addr, size, IoDir.WRITE, 0, IoFlags.FLUSH) - completion = OcfCompletion([("err", c_int)]) - io.callback = completion.callback data = Data(byte_count=0) io.set_data(data, 0) - io.submit_flush() - completion.wait() + completion = Sync(io).submit_flush() vol.close() assert int(completion.results["err"]) == 0 diff --git a/tests/functional/tests/engine/test_io_flags.py b/tests/functional/tests/engine/test_io_flags.py index 5fe1b30..b95b235 100644 --- a/tests/functional/tests/engine/test_io_flags.py +++ b/tests/functional/tests/engine/test_io_flags.py @@ -1,5 +1,6 @@ # # Copyright(c) 2020-2022 Intel Corporation +# Copyright(c) 2024 Huawei Technologies # SPDX-License-Identifier: BSD-3-Clause # @@ -15,17 +16,13 @@ from pyocf.types.core import Core from pyocf.types.volume import RamVolume from pyocf.types.volume_core import CoreVolume from pyocf.types.data import Data -from pyocf.types.io import IoDir +from pyocf.types.io import IoDir, Sync from pyocf.utils import Size -from pyocf.types.shared import OcfCompletion -def __io(io, queue, address, size, data, direction): +def __io(io, data): io.set_data(data, 0) - completion = OcfCompletion([("err", c_int)]) - io.callback = completion.callback - io.submit() - completion.wait() + completion = Sync(io).submit() return int(completion.results["err"]) @@ -37,7 +34,7 @@ def io_to_exp_obj(vol, address, size, data, offset, direction, flags): _data = Data.from_bytes(bytes(size)) else: _data = Data.from_bytes(data, offset, size) - ret = __io(io, queue, address, size, _data, direction) + ret = __io(io, _data) if not ret and direction == IoDir.READ: memmove(cast(data, c_void_p).value + offset, _data.handle, size) vol.close() diff --git a/tests/functional/tests/engine/test_large_io.py b/tests/functional/tests/engine/test_large_io.py index 7d73c25..77ae610 100644 --- a/tests/functional/tests/engine/test_large_io.py +++ b/tests/functional/tests/engine/test_large_io.py @@ -1,5 +1,6 @@ # # Copyright(c) 2022 Intel Corporation +# Copyright(c) 2024 Huawei Technologies # SPDX-License-Identifier: BSD-3-Clause # @@ -8,11 +9,10 @@ from ctypes import c_int from pyocf.types.cache import Cache from pyocf.types.data import Data from pyocf.types.core import Core -from pyocf.types.io import IoDir +from pyocf.types.io import IoDir, Sync from pyocf.types.volume import RamVolume, IoFlags from pyocf.types.volume_core import CoreVolume from pyocf.utils import Size -from pyocf.types.shared import OcfCompletion def test_large_flush(pyocf_ctx): @@ -28,12 +28,9 @@ def test_large_flush(pyocf_ctx): vol.open() io = vol.new_io(queue, 0, core_device.size.bytes, IoDir.WRITE, 0, IoFlags.FLUSH) - completion = OcfCompletion([("err", c_int)]) - io.callback = completion.callback data = Data(byte_count=0) io.set_data(data, 0) - io.submit_flush() - completion.wait() + completion = Sync(io).submit_flush() vol.close() assert int(completion.results["err"]) == 0 @@ -54,12 +51,9 @@ def test_large_discard(pyocf_ctx): vol.open() io = vol.new_io(queue, 0, core_device.size.bytes, IoDir.WRITE, 0, 0) - completion = OcfCompletion([("err", c_int)]) - io.callback = completion.callback data = Data(byte_count=0) io.set_data(data, 0) - io.submit_discard() - completion.wait() + completion = Sync(io).submit_discard() vol.close() assert int(completion.results["err"]) == 0 @@ -80,12 +74,9 @@ def test_large_io(pyocf_ctx): vol.open() io = vol.new_io(queue, 0, core_device.size.bytes, IoDir.WRITE, 0, 0) - completion = OcfCompletion([("err", c_int)]) - io.callback = completion.callback data = Data(byte_count=core_device.size.bytes) io.set_data(data) - io.submit() - completion.wait() + completion = Sync(io).submit() vol.close() diff --git a/tests/functional/tests/engine/test_read.py b/tests/functional/tests/engine/test_read.py index 911c68a..693bd71 100644 --- a/tests/functional/tests/engine/test_read.py +++ b/tests/functional/tests/engine/test_read.py @@ -18,9 +18,9 @@ from pyocf.types.core import Core from pyocf.types.volume import RamVolume from pyocf.types.volume_core import CoreVolume from pyocf.types.data import Data -from pyocf.types.io import IoDir +from pyocf.types.io import IoDir, Sync from pyocf.utils import Size -from pyocf.types.shared import OcfCompletion, CacheLineSize +from pyocf.types.shared import CacheLineSize def get_byte(number, byte): @@ -31,12 +31,9 @@ def bytes_to_uint32(byte0, byte1, byte2, byte3): return (int(byte3) << 24) + (int(byte2) << 16) + (int(byte1) << 8) + int(byte0) -def __io(io, queue, address, size, data, direction): +def __io(io, data): io.set_data(data, 0) - completion = OcfCompletion([("err", c_int)]) - io.callback = completion.callback - io.submit() - completion.wait() + completion = Sync(io).submit() return int(completion.results["err"]) @@ -46,7 +43,7 @@ def io_to_exp_obj(vol, queue, address, size, data, offset, direction): _data = Data.from_bytes(bytes(size)) else: _data = Data.from_bytes(data, offset, size) - ret = __io(io, queue, address, size, _data, direction) + ret = __io(io, _data) if not ret and direction == IoDir.READ: memmove(cast(data, c_void_p).value + offset, _data.handle, size) return ret diff --git a/tests/functional/tests/eviction/test_eviction.py b/tests/functional/tests/eviction/test_eviction.py index f377e09..6b34d89 100644 --- a/tests/functional/tests/eviction/test_eviction.py +++ b/tests/functional/tests/eviction/test_eviction.py @@ -1,5 +1,6 @@ # # Copyright(c) 2019-2022 Intel Corporation +# Copyright(c) 2024 Huawei Technologies # SPDX-License-Identifier: BSD-3-Clause # @@ -12,7 +13,7 @@ import pytest from pyocf.types.cache import Cache, CacheMode from pyocf.types.core import Core from pyocf.types.data import Data -from pyocf.types.io import IoDir +from pyocf.types.io import IoDir, Sync from pyocf.types.shared import OcfCompletion, CacheLineSize, SeqCutOffPolicy, CacheLines from pyocf.types.volume import RamVolume from pyocf.types.volume_core import CoreVolume @@ -180,10 +181,7 @@ def send_io(vol: CoreVolume, data: Data, addr: int = 0, target_ioclass: int = 0) io.set_data(data) - completion = OcfCompletion([("err", c_int)]) - io.callback = completion.callback - io.submit() - completion.wait() + completion = Sync(io).submit() vol.close() assert completion.results["err"] == 0, "IO to exported object completion" diff --git a/tests/functional/tests/flush/test_flush_after_mngmt.py b/tests/functional/tests/flush/test_flush_after_mngmt.py index f980d00..04634b0 100644 --- a/tests/functional/tests/flush/test_flush_after_mngmt.py +++ b/tests/functional/tests/flush/test_flush_after_mngmt.py @@ -1,31 +1,23 @@ # # Copyright(c) 2020-2022 Intel Corporation +# Copyright(c) 2024 Huawei Technologies # SPDX-License-Identifier: BSD-3-Clause # -from ctypes import c_int, memmove, cast, c_void_p -from enum import IntEnum -from itertools import product -import random - -import pytest +from ctypes import memmove, cast, c_void_p from pyocf.types.cache import Cache, CacheMode from pyocf.types.core import Core from pyocf.types.volume import RamVolume from pyocf.types.volume_core import CoreVolume from pyocf.types.data import Data -from pyocf.types.io import IoDir +from pyocf.types.io import IoDir, Sync from pyocf.utils import Size -from pyocf.types.shared import OcfCompletion -def __io(io, queue, address, size, data, direction): +def __io(io, data): io.set_data(data, 0) - completion = OcfCompletion([("err", c_int)]) - io.callback = completion.callback - io.submit() - completion.wait() + completion = Sync(io).submit() return int(completion.results["err"]) @@ -36,7 +28,7 @@ def io_to_exp_obj(vol, queue, address, size, data, offset, direction, flags): _data = Data.from_bytes(bytes(size)) else: _data = Data.from_bytes(data, offset, size) - ret = __io(io, queue, address, size, _data, direction) + ret = __io(io, _data) if not ret and direction == IoDir.READ: memmove(cast(data, c_void_p).value + offset, _data.handle, size) vol.close() diff --git a/tests/functional/tests/management/test_add_remove.py b/tests/functional/tests/management/test_add_remove.py index 4108063..1d43dae 100644 --- a/tests/functional/tests/management/test_add_remove.py +++ b/tests/functional/tests/management/test_add_remove.py @@ -1,5 +1,6 @@ # # Copyright(c) 2019-2022 Intel Corporation +# Copyright(c) 2024 Huawei Technologies # SPDX-License-Identifier: BSD-3-Clause # @@ -12,7 +13,7 @@ from pyocf.types.core import Core from pyocf.types.volume import RamVolume, Volume from pyocf.types.volume_core import CoreVolume from pyocf.types.data import Data -from pyocf.types.io import IoDir +from pyocf.types.io import IoDir, Sync from pyocf.types.queue import Queue from pyocf.utils import Size as S from pyocf.types.shared import OcfError, OcfCompletion, CacheLineSize @@ -132,10 +133,7 @@ def test_10add_remove_with_io(pyocf_ctx): ) io.set_data(write_data) - cmpl = OcfCompletion([("err", c_int)]) - io.callback = cmpl.callback - io.submit() - cmpl.wait() + Sync(io).submit() vol.close() cache.remove_core(core) @@ -305,10 +303,7 @@ def _io_to_core(vol: Volume, queue: Queue, data: Data): io = vol.new_io(queue, 0, data.size, IoDir.WRITE, 0, 0) io.set_data(data) - completion = OcfCompletion([("err", c_int)]) - io.callback = completion.callback - io.submit() - completion.wait() + completion = Sync(io).submit() vol.close() assert completion.results["err"] == 0, "IO to exported object completion" diff --git a/tests/functional/tests/management/test_attach_cache.py b/tests/functional/tests/management/test_attach_cache.py index 5ad3d38..da5481b 100644 --- a/tests/functional/tests/management/test_attach_cache.py +++ b/tests/functional/tests/management/test_attach_cache.py @@ -11,19 +11,14 @@ from itertools import count import pytest -from pyocf.ocf import OcfLib from pyocf.types.cache import ( Cache, CacheMode, - MetadataLayout, - CleaningPolicy, ) from pyocf.types.core import Core from pyocf.types.data import Data -from pyocf.types.io import IoDir +from pyocf.types.io import IoDir, Sync from pyocf.types.shared import ( - OcfError, - OcfCompletion, CacheLines, CacheLineSize, SeqCutOffPolicy, @@ -129,17 +124,14 @@ def io_to_exp_obj(vol, queue, address, size, data, offset, direction, target_ioc _data = Data.from_bytes(bytes(size)) else: _data = Data.from_bytes(data, offset, size) - ret = __io(io, queue, address, size, _data, direction) + ret = __io(io, _data) if not ret and direction == IoDir.READ: memmove(cast(data, c_void_p).value + offset, _data.handle, size) vol.close() return ret -def __io(io, queue, address, size, data, direction): +def __io(io, data): io.set_data(data, 0) - completion = OcfCompletion([("err", c_int)]) - io.callback = completion.callback - io.submit() - completion.wait() + completion = Sync(io).submit() return int(completion.results["err"]) diff --git a/tests/functional/tests/management/test_disable_cleaner.py b/tests/functional/tests/management/test_disable_cleaner.py index 5077397..a811c95 100644 --- a/tests/functional/tests/management/test_disable_cleaner.py +++ b/tests/functional/tests/management/test_disable_cleaner.py @@ -1,5 +1,6 @@ # # Copyright(c) 2022 Intel Corporation +# Copyright(c) 2024 Huawei Technologies # SPDX-License-Identifier: BSD-3-Clause # @@ -7,10 +8,9 @@ import pytest from pyocf.types.volume import RamVolume from pyocf.types.cache import Cache, CacheMetadataSegment, CleaningPolicy from pyocf.types.core import Core -from pyocf.types.shared import OcfError, OcfCompletion +from pyocf.types.shared import OcfError from pyocf.utils import Size as S from pyocf.helpers import get_metadata_segment_size -from ctypes import c_int def test_attach_cleaner_disabled(pyocf_ctx): """ diff --git a/tests/functional/tests/management/test_failover.py b/tests/functional/tests/management/test_failover.py index d10be0b..987225d 100644 --- a/tests/functional/tests/management/test_failover.py +++ b/tests/functional/tests/management/test_failover.py @@ -1,21 +1,18 @@ # # Copyright(c) 2022-2022 Intel Corporation +# Copyright(c) 2024 Huawei Technologies # SPDX-License-Identifier: BSD-3-Clause # import pytest -import copy -from ctypes import c_int from pyocf.types.cache import ( Cache, CacheMode, - MetadataLayout, - CleaningPolicy, ) from pyocf.types.core import Core from pyocf.types.data import Data -from pyocf.types.io import Io, IoDir +from pyocf.types.io import IoDir, Sync from pyocf.types.volume import RamVolume, Volume from pyocf.types.volume_cache import CacheVolume from pyocf.types.volume_core import CoreVolume @@ -23,10 +20,7 @@ from pyocf.types.volume_replicated import ReplicatedVolume from pyocf.types.shared import ( OcfError, OcfErrorCode, - OcfCompletion, - CacheLines, CacheLineSize, - SeqCutOffPolicy, ) from pyocf.utils import Size from pyocf.rio import Rio, ReadWrite @@ -377,12 +371,9 @@ def write_vol(vol, queue, data): for offset in range(0, data_size, subdata_size_max): subdata_size = min(data_size - offset, subdata_size_max) subdata = Data.from_bytes(data, offset, subdata_size) - comp = OcfCompletion([("error", c_int)]) io = vol.new_io(queue, offset, subdata_size, IoDir.WRITE, 0, 0,) io.set_data(subdata) - io.callback = comp.callback - io.submit() - comp.wait() + Sync(io).submit() vol.close() diff --git a/tests/functional/tests/management/test_start_stop.py b/tests/functional/tests/management/test_start_stop.py index ac449a6..b72cbe3 100644 --- a/tests/functional/tests/management/test_start_stop.py +++ b/tests/functional/tests/management/test_start_stop.py @@ -1,5 +1,6 @@ # # Copyright(c) 2019-2022 Intel Corporation +# Copyright(c) 2024 Huawei Technologies # SPDX-License-Identifier: BSD-3-Clause # @@ -25,15 +26,13 @@ from pyocf.types.cache import ( MetadataLayout, CleaningPolicy, CacheConfig, - PromotionPolicy, - Backfill, CacheDeviceConfig, CacheAttachConfig, ) from pyocf.types.core import Core from pyocf.types.ctx import OcfCtx from pyocf.types.data import Data -from pyocf.types.io import IoDir +from pyocf.types.io import IoDir, Sync from pyocf.types.queue import Queue from pyocf.types.shared import ( Uuid, @@ -520,10 +519,7 @@ def io_to_core(vol: Volume, queue: Queue, data: Data, offset: int): io = vol.new_io(queue, offset, data.size, IoDir.WRITE, 0, 0) io.set_data(data) - completion = OcfCompletion([("err", c_int)]) - io.callback = completion.callback - io.submit() - completion.wait() + completion = Sync(io).submit() vol.close() assert completion.results["err"] == 0, "IO to exported object completion" @@ -535,10 +531,7 @@ def io_from_exported_object(vol: Volume, queue: Queue, buffer_size: int, offset: io = vol.new_io(queue, offset, read_buffer.size, IoDir.READ, 0, 0) io.set_data(read_buffer) - completion = OcfCompletion([("err", c_int)]) - io.callback = completion.callback - io.submit() - completion.wait() + completion = Sync(io).submit() vol.close() assert completion.results["err"] == 0, "IO from exported object completion" diff --git a/tests/functional/tests/security/test_negative_io.py b/tests/functional/tests/security/test_negative_io.py index 932a238..56737bb 100644 --- a/tests/functional/tests/security/test_negative_io.py +++ b/tests/functional/tests/security/test_negative_io.py @@ -1,18 +1,17 @@ # # Copyright(c) 2019-2022 Intel Corporation +# Copyright(c) 2024 Huawei Technologies # SPDX-License-Identifier: BSD-3-Clause # -from ctypes import c_int from random import randrange import pytest from pyocf.types.cache import Cache, Core from pyocf.types.data import Data -from pyocf.types.io import IoDir +from pyocf.types.io import IoDir, Sync from pyocf.types.queue import Queue -from pyocf.types.shared import OcfCompletion from pyocf.types.volume import Volume, RamVolume from pyocf.types.volume_core import CoreVolume from pyocf.utils import Size @@ -204,9 +203,6 @@ def io_operation( io = vol.new_io(queue, offset, data.size, io_direction, io_class, 0) io.set_data(data) - completion = OcfCompletion([("err", c_int)]) - io.callback = completion.callback - io.submit() - completion.wait() + completion = Sync(io).submit() vol.close() return completion diff --git a/tests/functional/tests/security/test_secure_erase.py b/tests/functional/tests/security/test_secure_erase.py index a7255f2..8624290 100644 --- a/tests/functional/tests/security/test_secure_erase.py +++ b/tests/functional/tests/security/test_secure_erase.py @@ -1,5 +1,6 @@ # # Copyright(c) 2019-2022 Intel Corporation +# Copyright(c) 2024 Huawei Technologies # SPDX-License-Identifier: BSD-3-Clause # @@ -16,7 +17,7 @@ from pyocf.types.ctx import OcfCtx from pyocf.types.logger import DefaultLogger, LogLevel from pyocf.ocf import OcfLib from pyocf.types.cleaner import Cleaner -from pyocf.types.io import IoDir +from pyocf.types.io import IoDir, Sync from pyocf.types.shared import OcfCompletion @@ -90,10 +91,7 @@ def test_secure_erase_simple_io_read_misses(cache_mode): io = vol.new_io(queue, S.from_sector(1).B, write_data.size, IoDir.WRITE, 0, 0,) io.set_data(write_data) - cmpl = OcfCompletion([("err", c_int)]) - io.callback = cmpl.callback - io.submit() - cmpl.wait() + Sync(io).submit() cmpls = [] for i in range(100): @@ -113,10 +111,7 @@ def test_secure_erase_simple_io_read_misses(cache_mode): io = vol.new_io(queue, S.from_sector(1), write_data.size, IoDir.WRITE, 0, 0) io.set_data(write_data) - cmpl = OcfCompletion([("err", c_int)]) - io.callback = cmpl.callback - io.submit() - cmpl.wait() + Sync(io).submit() vol.close() stats = cache.get_stats() @@ -167,19 +162,13 @@ def test_secure_erase_simple_io_cleaning(): io = vol.new_io(queue, S.from_sector(1).B, read_data.size, IoDir.WRITE, 0, 0) io.set_data(read_data) - cmpl = OcfCompletion([("err", c_int)]) - io.callback = cmpl.callback - io.submit() - cmpl.wait() + Sync(io).submit() read_data = Data(S.from_sector(8).B) io = vol.new_io(queue, S.from_sector(1).B, read_data.size, IoDir.READ, 0, 0) io.set_data(read_data) - cmpl = OcfCompletion([("err", c_int)]) - io.callback = cmpl.callback - io.submit() - cmpl.wait() + Sync(io).submit() vol.close() stats = cache.get_stats() diff --git a/tests/functional/tests/surprise_shutdown/test_management_surprise_shutdown.py b/tests/functional/tests/surprise_shutdown/test_management_surprise_shutdown.py index 928cb6b..43337c3 100644 --- a/tests/functional/tests/surprise_shutdown/test_management_surprise_shutdown.py +++ b/tests/functional/tests/surprise_shutdown/test_management_surprise_shutdown.py @@ -1,9 +1,11 @@ +# # Copyright(c) 2021-2022 Intel Corporation +# Copyright(c) 2024 Huawei Technologies # SPDX-License-Identifier: BSD-3-Clause # import pytest -from ctypes import c_int, c_void_p, byref, cast, POINTER +from ctypes import byref from pyocf.types.cache import ( Cache, @@ -22,15 +24,12 @@ from pyocf.types.core import Core from pyocf.types.volume import ErrorDevice, RamVolume, VOLUME_POISON from pyocf.types.volume_core import CoreVolume from pyocf.types.volume_cache import CacheVolume -from pyocf.types.io import IoDir -from pyocf.types.ioclass import IoClassesInfo, IoClassInfo +from pyocf.types.io import IoDir, Sync +from pyocf.types.ioclass import IoClassesInfo from pyocf.utils import Size as S from pyocf.types.shared import ( - OcfCompletion, - CacheLineSize, OcfError, OcfErrorCode, - Uuid, ) from pyocf.ocf import OcfLib @@ -41,24 +40,18 @@ mngmt_op_surprise_shutdown_test_io_offset = S.from_MiB(4).B def ocf_write(vol, queue, val, offset): vol.open() data = Data.from_bytes(bytes([val] * 512)) - comp = OcfCompletion([("error", c_int)]) io = vol.new_io(queue, offset, 512, IoDir.WRITE, 0, 0) io.set_data(data) - io.callback = comp.callback - io.submit() - comp.wait() + Sync(io).submit() vol.close() def ocf_read(vol, queue, offset): vol.open() data = Data(byte_count=512) - comp = OcfCompletion([("error", c_int)]) io = vol.new_io(queue, offset, 512, IoDir.READ, 0, 0) io.set_data(data) - io.callback = comp.callback - io.submit() - comp.wait() + Sync(io).submit() vol.close() return data.get_bytes()[0]