diff --git a/tests/functional/pyocf/types/cache.py b/tests/functional/pyocf/types/cache.py index 50a6703..1df5a7a 100644 --- a/tests/functional/pyocf/types/cache.py +++ b/tests/functional/pyocf/types/cache.py @@ -160,6 +160,11 @@ class Cache: if status: raise OcfError("Error setting management queue", status) + def change_cache_mode(self, cache_mode: CacheMode): + self.get_and_write_lock() + self.owner.lib.ocf_mngt_cache_set_mode(self.cache_handle, cache_mode) + self.put_and_write_unlock() + def configure_device( self, device, force=False, perform_test=False, cache_line_size=None ): diff --git a/tests/functional/tests/management/test_change_mode.py b/tests/functional/tests/management/test_change_mode.py new file mode 100644 index 0000000..12b3f53 --- /dev/null +++ b/tests/functional/tests/management/test_change_mode.py @@ -0,0 +1,29 @@ +# +# Copyright(c) 2019 Intel Corporation +# SPDX-License-Identifier: BSD-3-Clause-Clear +# + +import pytest + +from pyocf.types.cache import Cache, CacheMode +from pyocf.types.volume import Volume +from pyocf.utils import Size as S +from pyocf.types.shared import CacheLineSize + + +@pytest.mark.parametrize("from_cm", CacheMode) +@pytest.mark.parametrize("to_cm", CacheMode) +@pytest.mark.parametrize("cls", CacheLineSize) +def test_change_cache_mode(pyocf_ctx, from_cm, to_cm, cls): + # Start cache device + cache_device = Volume(S.from_MiB(100)) + cache = Cache.start_on_device(cache_device, cache_mode=from_cm, cache_line_size=cls) + + # Check if started with correct cache mode + stats = cache.get_stats() + assert stats["conf"]["cache_mode"] == from_cm + + # Change cache mode and check if stats are as expected + cache.change_cache_mode(to_cm) + stats_after = cache.get_stats() + assert stats_after["conf"]["cache_mode"] == to_cm