~canonical-platform-qa/snappy-ecosystem-tests/fixing_ci

« back to all changes in this revision

Viewing changes to snappy_ecosystem_tests/commons/config.py

  • Committer: Heber Parrucci
  • Date: 2017-02-13 16:00:04 UTC
  • mto: This revision was merged to the branch mainline in revision 14.
  • Revision ID: heber.parrucci@canonical.com-20170213160004-oe9fnfkd6foqllae
Changing runner for pytest to aviod the plugins issues in nose2 using testtools.
Making pylint more strict: fail with Warnings messages.
Refactoring global variables to use Singletons instead.
Updating README.rst with the new runner options

Show diffs side-by-side

added added

removed removed

Lines of Context:
24
24
import logging
25
25
import os
26
26
 
 
27
from snappy_ecosystem_tests.utils.singleton import Singleton
 
28
 
27
29
LOGGER = logging.getLogger(__name__)
28
 
CONFIG_STACK = None
29
30
 
30
31
DEFAULT_CONF = 'ecosystem_tests.cfg'
31
32
KEY_DEFAULT = 'default'
50
51
    return ecosystem_config
51
52
 
52
53
 
53
 
def _get_config_stack(dir_path, file_name):
54
 
    """Return the config stack variable"""
55
 
    full_path = os.path.join(dir_path, file_name)
56
 
    _config_stack = _get_config_stack_from_file(full_path)
57
 
    return _config_stack
58
 
 
59
 
 
60
 
def get_config(dir_path=None, file_name=None):
61
 
    """Return the config stack variable"""
62
 
    global CONFIG_STACK
63
 
    if not CONFIG_STACK:
64
 
        set_config(dir_path, file_name)
65
 
    return CONFIG_STACK
66
 
 
67
 
 
68
 
def set_config(dir_path=None, file_name=None):
69
 
    """Set the config stack variable"""
70
 
    global CONFIG_STACK
71
 
    CONFIG_STACK = _get_config_stack(dir_path=dir_path or get_config_dir(),
72
 
                                     file_name=file_name or DEFAULT_CONF)
73
 
    return CONFIG_STACK
 
54
class ConfigStack(metaclass=Singleton):
 
55
    """Singleton class to store the snappy ecosystem config stack"""
 
56
 
 
57
    def __init__(self):
 
58
        self.__config = None
 
59
 
 
60
    @property
 
61
    def config(self):
 
62
        """Return the current config"""
 
63
        return self.__get_config()
 
64
 
 
65
    def set_config(self, dir_path=None, file_name=None):
 
66
        """Set the current config for the given dirpath and file name.
 
67
        :param dir_path: the dir in which the config file is located.
 
68
        If None it takes the default one returned by get_config_dir()
 
69
        :param file_name: the config file name.
 
70
        If None it takes the default one stored in DEFAULT_CONF
 
71
        :return the created config as a dict
 
72
        """
 
73
        self.__config = self.__create_config_stack(dir_path, file_name)
 
74
 
 
75
    def release_config(self):
 
76
        """Release the current config for those cases that explicitly want to modify it"""
 
77
        self.__config = None
 
78
 
 
79
    def __get_config(self):
 
80
        """Get current config. Set it in the case is None"""
 
81
        if self.__config is None:
 
82
            self.set_config()
 
83
        return self.__config
 
84
 
 
85
    @staticmethod
 
86
    def __create_config_stack(dir_path=None, file_name=None):
 
87
        """Create the config stack for the given dirpath and file name
 
88
        :param dir_path: the dir in which the config file is located.
 
89
        If None it takes the default one returned by get_config_dir()
 
90
        :param file_name: the config file name.
 
91
        If None it takes the default one stored in DEFAULT_CONF
 
92
        :return the created config as a dict
 
93
        """
 
94
        full_path = os.path.join(dir_path or get_config_dir(), file_name or DEFAULT_CONF)
 
95
        return _get_config_stack_from_file(full_path)
74
96
 
75
97
 
76
98
class SnappyEcosystemTestsConfig:
133
155
    def read_config_from_file(self):
134
156
        """Read config from file"""
135
157
        self.config.read(self.file_path)
 
158
 
 
159
 
 
160
CONFIG_STACK = ConfigStack()