Merge pull request #1188 from mmichal10/test-standby-fi-improvement
tests: improve standby fault injection tests
This commit is contained in:
		| @@ -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.cli_messages import check_stderr_msg, missing_param, disallowed_param | ||||||
| from api.cas.cache_config import CacheLineSize, CacheMode | from api.cas.cache_config import CacheLineSize, CacheMode | ||||||
| from api.cas.cli import standby_activate_cmd, standby_load_cmd | 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 api.cas.ioclass_config import IoClass | ||||||
| from test_tools.dd import Dd | from test_tools.dd import Dd | ||||||
| from test_utils.os_utils import sync | from test_utils.os_utils import sync | ||||||
| @@ -23,6 +24,7 @@ from test_utils.filesystem.file import File | |||||||
|  |  | ||||||
|  |  | ||||||
| block_size = Size(1, Unit.Blocks512) | 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])) | @pytest.mark.require_disk("cache", DiskTypeSet([DiskType.nand, DiskType.optane])) | ||||||
| @@ -47,8 +49,8 @@ def test_activate_corrupted(): | |||||||
|         cache_id = 1 |         cache_id = 1 | ||||||
|         cls = CacheLineSize.LINE_32KiB |         cls = CacheLineSize.LINE_32KiB | ||||||
|         md_dump = prepare_md_dump(cache_device, core_device, cls, cache_id) |         md_dump = prepare_md_dump(cache_device, core_device, cls, cache_id) | ||||||
|  |         dmesg_out = TestRun.executor.run_expect_success("dmesg").stdout | ||||||
|     for offset in get_offsets_to_corrupt(md_dump.size, block_size): |         superblock_size = get_md_section_size("Super block config", dmesg_out) | ||||||
|  |  | ||||||
|     with TestRun.step("Prepare standby instance"): |     with TestRun.step("Prepare standby instance"): | ||||||
|         cache = casadm.standby_init( |         cache = casadm.standby_init( | ||||||
| @@ -103,8 +105,8 @@ def test_load_corrupted(): | |||||||
|         cache_id = 1 |         cache_id = 1 | ||||||
|         cls = CacheLineSize.LINE_32KiB |         cls = CacheLineSize.LINE_32KiB | ||||||
|         md_dump = prepare_md_dump(cache_device, core_device, cls, cache_id) |         md_dump = prepare_md_dump(cache_device, core_device, cls, cache_id) | ||||||
|  |         dmesg_out = TestRun.executor.run_expect_success("dmesg").stdout | ||||||
|     for offset in get_offsets_to_corrupt(md_dump.size, block_size): |         superblock_size = get_md_section_size("Super block config", dmesg_out) | ||||||
|  |  | ||||||
|     with TestRun.step(f"Corrupt {block_size} on the offset {offset*block_size}"): |     with TestRun.step(f"Corrupt {block_size} on the offset {offset*block_size}"): | ||||||
|         corrupted_md = prepare_corrupted_md(md_dump, 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 |         cache_id = 1 | ||||||
|         cls = CacheLineSize.LINE_32KiB |         cls = CacheLineSize.LINE_32KiB | ||||||
|         md_dump = prepare_md_dump(cache_device, core_device, cls, cache_id) |         md_dump = prepare_md_dump(cache_device, core_device, cls, cache_id) | ||||||
|  |         dmesg_out = TestRun.executor.run_expect_success("dmesg").stdout | ||||||
|     for offset in get_offsets_to_corrupt(md_dump.size, block_size): |         superblock_size = get_md_section_size("Super block config", dmesg_out) | ||||||
|  |  | ||||||
|     with TestRun.step("Prepare standby instance"): |     with TestRun.step("Prepare standby instance"): | ||||||
|         cache = casadm.standby_init( |         cache = casadm.standby_init( | ||||||
| @@ -186,14 +188,6 @@ def test_activate_corrupted_after_dump(): | |||||||
|         md_dump.remove() |         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): | def prepare_md_dump(cache_device, core_device, cls, cache_id): | ||||||
|     with TestRun.step("Setup WB cache instance with one core"): |     with TestRun.step("Setup WB cache instance with one core"): | ||||||
|         cache = casadm.start_cache( |         cache = casadm.start_cache( | ||||||
|   | |||||||
		Reference in New Issue
	
	Block a user
	 Robert Baldyga
					Robert Baldyga