test-framework: add null blk
Signed-off-by: Kamil Gierszewski <kamil.gierszewski@huawei.com>
This commit is contained in:
parent
42ebe34da3
commit
1e82bd6d3c
51
storage_devices/nullblk.py
Normal file
51
storage_devices/nullblk.py
Normal file
@ -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)
|
@ -100,10 +100,6 @@ def check_if_regular_file_exists(path):
|
|||||||
return TestRun.executor.run(f"test -f \"{path}\"").exit_code == 0
|
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):
|
def check_if_symlink_exists(path):
|
||||||
return TestRun.executor.run(f"test -L \"{path}\"").exit_code == 0
|
return TestRun.executor.run(f"test -L \"{path}\"").exit_code == 0
|
||||||
|
|
||||||
|
@ -1,6 +1,6 @@
|
|||||||
#
|
#
|
||||||
# Copyright(c) 2019-2021 Intel Corporation
|
# 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
|
# SPDX-License-Identifier: BSD-3-Clause
|
||||||
#
|
#
|
||||||
|
|
||||||
@ -9,8 +9,7 @@ from test_tools.fs_utils import (
|
|||||||
readlink,
|
readlink,
|
||||||
create_directory,
|
create_directory,
|
||||||
check_if_symlink_exists,
|
check_if_symlink_exists,
|
||||||
check_if_directory_exists,
|
check_if_directory_exists
|
||||||
check_if_special_block_exist
|
|
||||||
)
|
)
|
||||||
from test_utils.filesystem.file import File
|
from test_utils.filesystem.file import File
|
||||||
|
|
||||||
@ -77,12 +76,6 @@ class Symlink(File):
|
|||||||
raise FileExistsError("Existing symlink points to a different target.")
|
raise FileExistsError("Existing symlink points to a different target.")
|
||||||
elif not create:
|
elif not create:
|
||||||
raise FileNotFoundError("Requested symlink does not exist.")
|
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)
|
is_dir = check_if_directory_exists(link_path)
|
||||||
if is_dir:
|
if is_dir:
|
||||||
raise IsADirectoryError(
|
raise IsADirectoryError(
|
||||||
|
Loading…
Reference in New Issue
Block a user