Merge pull request #742 from jfckm/cleaner-disabled-cp-setting
Tests for disabled_cleaner setting
This commit is contained in:
commit
b43ff83e33
@ -17,6 +17,7 @@ from ctypes import (
|
||||
byref,
|
||||
cast,
|
||||
create_string_buffer,
|
||||
POINTER,
|
||||
)
|
||||
from enum import IntEnum, auto
|
||||
from datetime import timedelta
|
||||
@ -346,6 +347,22 @@ class Cache:
|
||||
if c.results["error"]:
|
||||
raise OcfError("Error changing cleaning policy", c.results["error"])
|
||||
|
||||
def get_cleaning_policy(self):
|
||||
cleaning_policy = c_int()
|
||||
|
||||
self.read_lock()
|
||||
|
||||
status = self.owner.lib.ocf_mngt_cache_cleaning_get_policy(
|
||||
self.cache_handle, byref(cleaning_policy)
|
||||
)
|
||||
|
||||
self.read_unlock()
|
||||
|
||||
if status != OcfErrorCode.OCF_OK:
|
||||
raise OcfError("Failed to get cleaning policy", ret)
|
||||
|
||||
return CleaningPolicy(cleaning_policy.value)
|
||||
|
||||
def set_cleaning_policy_param(self, cleaning_policy: CleaningPolicy, param_id, param_value):
|
||||
self.write_lock()
|
||||
|
||||
@ -998,6 +1015,8 @@ lib.ocf_cache_get_front_volume.argtypes = [c_void_p]
|
||||
lib.ocf_cache_get_front_volume.restype = c_void_p
|
||||
lib.ocf_cache_get_volume.argtypes = [c_void_p]
|
||||
lib.ocf_cache_get_volume.restype = c_void_p
|
||||
lib.ocf_mngt_cache_cleaning_get_policy.argypes = [c_void_p, POINTER(c_int)]
|
||||
lib.ocf_mngt_cache_cleaning_get_policy.restype = OcfErrorCode
|
||||
lib.ocf_mngt_cache_cleaning_set_policy.argtypes = [
|
||||
c_void_p,
|
||||
c_uint32,
|
||||
|
@ -1,5 +1,5 @@
|
||||
#
|
||||
# Copyright(c) 2019-2021 Intel Corporation
|
||||
# Copyright(c) 2019-2022 Intel Corporation
|
||||
# SPDX-License-Identifier: BSD-3-Clause
|
||||
#
|
||||
|
||||
@ -59,6 +59,7 @@ class OcfErrorCode(IntEnum):
|
||||
OCF_ERR_STANDBY_ATTACHED = auto()
|
||||
OCF_ERR_CORE_NOT_REMOVED = auto()
|
||||
OCF_ERR_CACHE_NOT_STANDBY = auto()
|
||||
OCF_ERR_CLEANER_DISABLED = auto()
|
||||
|
||||
|
||||
class OcfCompletion:
|
||||
|
@ -5,7 +5,7 @@
|
||||
|
||||
import pytest
|
||||
from pyocf.types.volume import RamVolume
|
||||
from pyocf.types.cache import Cache, CacheMetadataSegment
|
||||
from pyocf.types.cache import Cache, CacheMetadataSegment, CleaningPolicy
|
||||
from pyocf.types.core import Core
|
||||
from pyocf.types.shared import OcfError, OcfCompletion
|
||||
from pyocf.utils import Size as S
|
||||
@ -103,7 +103,6 @@ def test_load_cleaner_disabled(pyocf_ctx):
|
||||
|
||||
|
||||
|
||||
@pytest.mark.skip(reason="not implemented")
|
||||
def test_cleaner_disabled_nop(pyocf_ctx):
|
||||
"""
|
||||
title: NOP enfocement in cleaner_disabled mode..
|
||||
@ -126,10 +125,31 @@ def test_cleaner_disabled_nop(pyocf_ctx):
|
||||
- disable_cleaner::starting_with_nop_policy
|
||||
- disable_cleaner::nop_enforcement
|
||||
"""
|
||||
pass
|
||||
cache_device = RamVolume(S.from_MiB(50))
|
||||
|
||||
cache = Cache.start_on_device(cache_device, disable_cleaner=True)
|
||||
|
||||
assert cache.get_cleaning_policy() == CleaningPolicy.NOP, (
|
||||
"Cleaning policy should be NOP after starting cache with disabled cleaner"
|
||||
)
|
||||
|
||||
with pytest.raises(OcfError):
|
||||
cache.set_cleaning_policy(CleaningPolicy.ALRU)
|
||||
|
||||
assert cache.get_cleaning_policy() == CleaningPolicy.NOP, (
|
||||
"It shouldn't be possible to switch cleaning policy to ALRU when cleaner is disabled"
|
||||
)
|
||||
|
||||
with pytest.raises(OcfError):
|
||||
cache.set_cleaning_policy(CleaningPolicy.ACP)
|
||||
|
||||
assert cache.get_cleaning_policy() == CleaningPolicy.NOP, (
|
||||
"It shouldn't be possible to switch cleaning policy to ACP when cleaner is disabled"
|
||||
)
|
||||
|
||||
cache.set_cleaning_policy(CleaningPolicy.NOP)
|
||||
|
||||
|
||||
@pytest.mark.skip(reason="not implemented")
|
||||
def test_attach_cleaner_disabled_non_default(pyocf_ctx):
|
||||
"""
|
||||
title: Attach cache with default config does not set clener_disabled.
|
||||
@ -148,4 +168,11 @@ def test_attach_cleaner_disabled_non_default(pyocf_ctx):
|
||||
requirements:
|
||||
- disable_cleaner::default_setting
|
||||
"""
|
||||
pass
|
||||
cache_device = RamVolume(S.from_MiB(50))
|
||||
|
||||
cache = Cache.start_on_device(cache_device)
|
||||
|
||||
cleaning_size = get_metadata_segment_size(cache, CacheMetadataSegment.CLEANING)
|
||||
assert (
|
||||
cleaning_size > 0
|
||||
), f'Metadata cleaning segment size expected: "> 0", got: "{cleaning_size}"'
|
||||
|
Loading…
Reference in New Issue
Block a user