From 475ddb00509bf715eadd5a836ef33524188428d1 Mon Sep 17 00:00:00 2001 From: Daniel Madej Date: Fri, 7 Feb 2020 13:02:26 +0100 Subject: [PATCH] Get all cache modes which traits include those provided as argument Signed-off-by: Daniel Madej --- test/functional/api/cas/cache_config.py | 23 +++++++++++++++-------- 1 file changed, 15 insertions(+), 8 deletions(-) diff --git a/test/functional/api/cas/cache_config.py b/test/functional/api/cas/cache_config.py index ef7b7de..f3535ba 100644 --- a/test/functional/api/cas/cache_config.py +++ b/test/functional/api/cas/cache_config.py @@ -1,12 +1,13 @@ # -# Copyright(c) 2019 Intel Corporation +# Copyright(c) 2019-2020 Intel Corporation # SPDX-License-Identifier: BSD-3-Clause-Clear # from aenum import Enum, IntFlag -from test_utils.size import Size, Unit from attotime import attotimedelta +from test_utils.size import Size, Unit + class CacheLineSize(Enum): LINE_4KiB = Size(4, Unit.KibiByte) @@ -20,6 +21,12 @@ class CacheLineSize(Enum): return int(self.value.get_value()) +class CacheModeTrait(IntFlag): + InsertWrite = 1 + InsertRead = 2 + LazyFlush = 4 + + class CacheMode(Enum): WT = "Write-Through" WB = "Write-Back" @@ -34,7 +41,7 @@ class CacheMode(Enum): @staticmethod def get_traits(cache_mode): if cache_mode == CacheMode.PT: - return 0 + return CacheModeTrait(0) elif cache_mode == CacheMode.WT: return CacheModeTrait.InsertRead | CacheModeTrait.InsertWrite elif cache_mode == CacheMode.WB: @@ -44,11 +51,11 @@ class CacheMode(Enum): elif cache_mode == CacheMode.WA: return CacheModeTrait.InsertRead - -class CacheModeTrait(IntFlag): - InsertWrite = 1 - InsertRead = 2 - LazyFlush = 4 + @staticmethod + def with_traits(flags: CacheModeTrait): + return [ + m for m in CacheMode if all(map(lambda t: t in CacheMode.get_traits(m), flags)) + ] class SeqCutOffPolicy(Enum):