tests: improve standby fault injection tests

Signed-off-by: Michal Mielewczyk <michal.mielewczyk@intel.com>
This commit is contained in:
Michal Mielewczyk 2022-04-25 12:52:40 +02:00
parent 9081ce3bb6
commit c13dd5bc88

View File

@ -16,6 +16,7 @@ from test_utils.size import Size, Unit
from api.cas.cli_messages import check_stderr_msg, missing_param, disallowed_param
from api.cas.cache_config import CacheLineSize, CacheMode
from api.cas.cli import standby_activate_cmd, standby_load_cmd
from api.cas.dmesg import get_md_section_size
from api.cas.ioclass_config import IoClass
from test_tools.dd import Dd
from test_utils.os_utils import sync
@ -23,6 +24,7 @@ from test_utils.filesystem.file import File
block_size = Size(1, Unit.Blocks512)
offset = 1 # offset is expressed in the number of blocks
@pytest.mark.require_disk("cache", DiskTypeSet([DiskType.nand, DiskType.optane]))
@ -47,8 +49,8 @@ def test_activate_corrupted():
cache_id = 1
cls = CacheLineSize.LINE_32KiB
md_dump = prepare_md_dump(cache_device, core_device, cls, cache_id)
for offset in get_offsets_to_corrupt(md_dump.size, block_size):
dmesg_out = TestRun.executor.run_expect_success("dmesg").stdout
superblock_size = get_md_section_size("Super block config", dmesg_out)
with TestRun.step("Prepare standby instance"):
cache = casadm.standby_init(
@ -103,8 +105,8 @@ def test_load_corrupted():
cache_id = 1
cls = CacheLineSize.LINE_32KiB
md_dump = prepare_md_dump(cache_device, core_device, cls, cache_id)
for offset in get_offsets_to_corrupt(md_dump.size, block_size):
dmesg_out = TestRun.executor.run_expect_success("dmesg").stdout
superblock_size = get_md_section_size("Super block config", dmesg_out)
with TestRun.step(f"Corrupt {block_size} on the offset {offset*block_size}"):
corrupted_md = prepare_corrupted_md(md_dump, offset, block_size)
@ -148,8 +150,8 @@ def test_activate_corrupted_after_dump():
cache_id = 1
cls = CacheLineSize.LINE_32KiB
md_dump = prepare_md_dump(cache_device, core_device, cls, cache_id)
for offset in get_offsets_to_corrupt(md_dump.size, block_size):
dmesg_out = TestRun.executor.run_expect_success("dmesg").stdout
superblock_size = get_md_section_size("Super block config", dmesg_out)
with TestRun.step("Prepare standby instance"):
cache = casadm.standby_init(
@ -186,14 +188,6 @@ def test_activate_corrupted_after_dump():
md_dump.remove()
def get_offsets_to_corrupt(md_size, bs, count=100):
offsets = list(range(0, int(md_size.value), bs.value))
offsets = random.choices(offsets, k=min(len(offsets), count))
# Offset is expresed as a number of blocks
return [int(o / bs.value) for o in offsets]
def prepare_md_dump(cache_device, core_device, cls, cache_id):
with TestRun.step("Setup WB cache instance with one core"):
cache = casadm.start_cache(