diff --git a/storage_devices/nullblk.py b/storage_devices/nullblk.py new file mode 100644 index 0000000..c55cf5f --- /dev/null +++ b/storage_devices/nullblk.py @@ -0,0 +1,51 @@ +# +# Copyright(c) 2024 Huawei Technologies Co., Ltd. +# SPDX-License-Identifier: BSD-3-Clause +# + +from core.test_run import TestRun +from storage_devices.device import Device +from test_tools.fs_utils import ls, parse_ls_output +from test_utils.os_utils import ( + unload_kernel_module, + is_kernel_module_loaded, + ModuleRemoveMethod, + reload_kernel_module, +) + + +class NullBlk(Device): + _module = "null_blk" + + @classmethod + def create( + cls, completion_nsec: int = 10000, size_gb: int = 250, nr_devices: int = 1, bs: int = 512 + ): + TestRun.LOGGER.info("Configure null_blk...") + params = { + "completion_nsec": str(completion_nsec), + "gb": str(size_gb), + "nr_devices": str(nr_devices), + "bs": str(bs), + } + + reload_kernel_module(cls._module, params) + return cls.list() + + @classmethod + def remove_all(cls): + if not is_kernel_module_loaded(cls._module): + return + TestRun.LOGGER.info("Removing null_blk ") + unload_kernel_module(module_name=cls._module, unload_method=ModuleRemoveMethod.modprobe) + + @classmethod + def list(cls): + return [cls(null_blk.full_path) for null_blk in cls._list_devices()] + + @staticmethod + def _list_devices(): + ls_output = ls(f"/dev/nullb*") + if "No such file or directory" in ls_output: + return [] + return parse_ls_output(ls_output) diff --git a/test_tools/fs_utils.py b/test_tools/fs_utils.py index 3b2adff..cfb41c4 100644 --- a/test_tools/fs_utils.py +++ b/test_tools/fs_utils.py @@ -100,10 +100,6 @@ def check_if_regular_file_exists(path): return TestRun.executor.run(f"test -f \"{path}\"").exit_code == 0 -def check_if_special_block_exist(path): - return TestRun.executor.run(f"test -b \"{path}\"").exit_code == 0 - - def check_if_symlink_exists(path): return TestRun.executor.run(f"test -L \"{path}\"").exit_code == 0 diff --git a/test_utils/filesystem/symlink.py b/test_utils/filesystem/symlink.py index 7765dc8..5d2e45e 100644 --- a/test_utils/filesystem/symlink.py +++ b/test_utils/filesystem/symlink.py @@ -1,6 +1,6 @@ # # Copyright(c) 2019-2021 Intel Corporation -# Copyright(c) 2023 Huawei Technologies Co., Ltd. +# Copyright(c) 2023-2024 Huawei Technologies Co., Ltd. # SPDX-License-Identifier: BSD-3-Clause # @@ -9,8 +9,7 @@ readlink, create_directory, check_if_symlink_exists, - check_if_directory_exists, - check_if_special_block_exist + check_if_directory_exists ) from test_utils.filesystem.file import File @@ -77,12 +76,6 @@ def get_symlink(cls, link_path: str, target: str = None, create: bool = False): raise FileExistsError("Existing symlink points to a different target.") elif not create: raise FileNotFoundError("Requested symlink does not exist.") - - is_special_block = check_if_special_block_exist(link_path) - if is_special_block: - if not target or readlink(link_path) == readlink(target): - return cls(link_path) - is_dir = check_if_directory_exists(link_path) if is_dir: raise IsADirectoryError(