From d6eebc2cc33ce938d28ea787779eec9909257e58 Mon Sep 17 00:00:00 2001 From: "Rutkowski, Adam J" Date: Mon, 26 Sep 2022 11:07:27 +0200 Subject: [PATCH 1/2] test framework: method to get cache modes without given trait Signed-off-by: Rutkowski, Adam J --- test/functional/api/cas/cache_config.py | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/test/functional/api/cas/cache_config.py b/test/functional/api/cas/cache_config.py index 8be59f7..cf1d622 100644 --- a/test/functional/api/cas/cache_config.py +++ b/test/functional/api/cas/cache_config.py @@ -60,6 +60,12 @@ class CacheMode(Enum): m for m in CacheMode if all(map(lambda t: t in CacheMode.get_traits(m), flags)) ] + @staticmethod + def without_traits(flags: CacheModeTrait): + return [ + m for m in CacheMode if not any(map(lambda t: t in CacheMode.get_traits(m), flags)) + ] + @staticmethod def with_any_trait(flags: CacheModeTrait): return [ From 349ec69f65744e0cf0e052b42422aff4976506e8 Mon Sep 17 00:00:00 2001 From: "Rutkowski, Adam J" Date: Mon, 26 Sep 2022 11:10:06 +0200 Subject: [PATCH 2/2] Do not run test_core_device_error in lazy write cache modes This test has multiple assumptions that do not hold for WB/WO: 1. it assumes primary storage errors would propagate to user I/O 2. cache is stopped with metadata flush, which would fail 3. after stopping CAS core content is verified with fio 4. cache is so small that it overfills, resulting in PT I/O further complicating error accounting. Signed-off-by: Rutkowski, Adam J --- .../tests/fault_injection/test_primary_device_error.py | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/test/functional/tests/fault_injection/test_primary_device_error.py b/test/functional/tests/fault_injection/test_primary_device_error.py index 35647bf..df75439 100644 --- a/test/functional/tests/fault_injection/test_primary_device_error.py +++ b/test/functional/tests/fault_injection/test_primary_device_error.py @@ -12,6 +12,7 @@ from core.test_run import TestRun from api.cas import casadm from api.cas.cache_config import ( CacheMode, + CacheModeTrait, CacheLineSize, SeqCutOffPolicy, CleaningPolicy, @@ -22,7 +23,7 @@ from test_utils.size import Size, Unit @pytest.mark.parametrizex("cache_line_size", CacheLineSize) -@pytest.mark.parametrizex("cache_mode", CacheMode) +@pytest.mark.parametrizex("cache_mode", CacheMode.without_traits(CacheModeTrait.LazyWrites)) @pytest.mark.parametrizex("io_dir", [ReadWrite.randread, ReadWrite.randwrite]) @pytest.mark.require_disk("cache", DiskTypeSet([DiskType.optane, DiskType.nand])) @pytest.mark.require_disk("core", DiskTypeLowerThan("cache"))