Create init config class representation

This commit is contained in:
Katarzyna Lapinska 2019-12-20 15:06:52 +01:00
parent e435f3017a
commit 53664937ba
6 changed files with 54 additions and 40 deletions

2
ocf

@ -1 +1 @@
Subproject commit 1ec0a5c053c2e5fb1d502b0aa052030838011278 Subproject commit ce28c71475756cae0abe698039c187b645c029d1

View File

@ -1,3 +1,3 @@
plugins/ lib/external_plugins
results/ results/
config/dut_config.yml config/dut_config.yml

View File

@ -12,40 +12,54 @@ from test_tools import fs_utils
opencas_conf_path = "/etc/opencas/opencas.conf" opencas_conf_path = "/etc/opencas/opencas.conf"
def create_init_config_from_running_configuration(load: bool = None, extra_flags=""): class InitConfig:
cache_lines = [] def __init__(self):
core_lines = [] self.cache_config_lines = []
for cache in casadm_parser.get_caches(): self.core_config_lines = []
cache_lines.append(CacheConfigLine(cache.cache_id,
cache.cache_device, def add_cache(self, cache_id, cache_device: Device,
cache.get_cache_mode(), cache_mode: CacheMode = CacheMode.WT, load=None, extra_flags=""):
load, self.cache_config_lines.append(
extra_flags)) CacheConfigLine(cache_id, cache_device, cache_mode, load, extra_flags))
for core in casadm_parser.get_cores(cache.cache_id):
core_lines.append(CoreConfigLine(cache.cache_id, def add_core(self, cache_id, core_id, core_device: Device):
core.core_id, self.core_config_lines.append(CoreConfigLine(cache_id, core_id, core_device))
core.core_device))
def save_config_file(self):
config_lines = [] config_lines = []
create_default_init_config() InitConfig.create_default_init_config()
if len(cache_lines) > 0: if self.cache_config_lines:
config_lines.append(CacheConfigLine.header) config_lines.append(CacheConfigLine.header)
for c in cache_lines: for c in self.cache_config_lines:
config_lines.append(str(c)) config_lines.append(str(c))
if len(core_lines) > 0: if self.core_config_lines:
config_lines.append(CoreConfigLine.header) config_lines.append(CoreConfigLine.header)
for c in core_lines: for c in self.core_config_lines:
config_lines.append(str(c)) config_lines.append(str(c))
fs_utils.write_file(opencas_conf_path, '\n'.join(config_lines), False) fs_utils.write_file(opencas_conf_path, '\n'.join(config_lines), False)
@classmethod
def create_init_config_from_running_configuration(cls, load: bool = None, extra_flags=""):
init_conf = cls()
for cache in casadm_parser.get_caches():
init_conf.add_cache(cache.cache_id,
cache.cache_device,
cache.get_cache_mode(),
load,
extra_flags)
for core in casadm_parser.get_cores(cache.cache_id):
init_conf.add_core(cache.cache_id, core.core_id, core.core_device)
init_conf.save_config_file()
return init_conf
def create_default_init_config(): @classmethod
def create_default_init_config(cls):
cas_version = casadm_parser.get_casadm_version() cas_version = casadm_parser.get_casadm_version()
fs_utils.write_file(opencas_conf_path, fs_utils.write_file(opencas_conf_path,
f"version={'.'.join(str(x) for x in cas_version.release[0:3])}") f"version={'.'.join(str(x) for x in cas_version.release[0:3])}")
class CacheConfigLine: class CacheConfigLine:
header = "[caches]" header = "[caches]"
def __init__(self, cache_id, cache_device: Device, def __init__(self, cache_id, cache_device: Device,
@ -69,7 +83,6 @@ class CacheConfigLine:
class CoreConfigLine: class CoreConfigLine:
header = "[cores]" header = "[cores]"
def __init__(self, cache_id, core_id, core_device: Device): def __init__(self, cache_id, core_id, core_device: Device):

@ -1 +1 @@
Subproject commit 4b4c66db919bb44bba06de5998e2e81517c7ea4b Subproject commit 1c2adf303c58bfe1e6d37b3648eae7d9d18af671

View File

@ -96,8 +96,8 @@ def pytest_runtest_teardown():
unmount_cas_devices() unmount_cas_devices()
casadm.remove_all_detached_cores() casadm.remove_all_detached_cores()
casadm.stop_all_caches() casadm.stop_all_caches()
from api.cas import init_config from api.cas.init_config import InitConfig
init_config.create_default_init_config() InitConfig.create_default_init_config()
DeviceMapper.remove_all() DeviceMapper.remove_all()
except Exception as ex: except Exception as ex:
TestRun.LOGGER.warning(f"Exception occured during platform cleanup.\n" TestRun.LOGGER.warning(f"Exception occured during platform cleanup.\n"
@ -156,8 +156,8 @@ def base_prepare(item):
if installer.check_if_installed(): if installer.check_if_installed():
try: try:
from api.cas import init_config from api.cas.init_config import InitConfig
init_config.create_default_init_config() InitConfig.create_default_init_config()
unmount_cas_devices() unmount_cas_devices()
casadm.stop_all_caches() casadm.stop_all_caches()
casadm.remove_all_detached_cores() casadm.remove_all_detached_cores()

View File

@ -7,8 +7,9 @@ import time
import pytest import pytest
from api.cas import casadm, casctl, casadm_parser, init_config, cas_module from api.cas import casadm, casctl, casadm_parser, cas_module
from api.cas.cache_config import CacheMode from api.cas.cache_config import CacheMode
from api.cas.init_config import InitConfig
from storage_devices.disk import DiskType, DiskTypeSet, DiskTypeLowerThan from storage_devices.disk import DiskType, DiskTypeSet, DiskTypeLowerThan
from core.test_run import TestRun from core.test_run import TestRun
from test_tools import fs_utils from test_tools import fs_utils
@ -84,7 +85,7 @@ def test_stress_service(cache_mode):
f"Stop and start CAS service {iterations_per_config} times."): f"Stop and start CAS service {iterations_per_config} times."):
with TestRun.step( with TestRun.step(
"Create CAS init config based on current running CAS configuration."): "Create CAS init config based on current running CAS configuration."):
init_config.create_init_config_from_running_configuration() InitConfig.create_init_config_from_running_configuration()
with TestRun.step("Stop CAS service."): with TestRun.step("Stop CAS service."):
casctl.stop() casctl.stop()
with TestRun.step("Check if service stopped successfully."): with TestRun.step("Check if service stopped successfully."):
@ -105,7 +106,7 @@ def test_stress_service(cache_mode):
with TestRun.step("Stop caches and create default init config file."): with TestRun.step("Stop caches and create default init config file."):
casadm.stop_all_caches() casadm.stop_all_caches()
init_config.create_default_init_config() InitConfig.create_default_init_config()
@pytest.mark.parametrize("cache_mode", CacheMode) @pytest.mark.parametrize("cache_mode", CacheMode)