diff options
author | George Paraskevopoulos <geopar@intracom-telecom.com> | 2016-11-08 14:33:19 +0200 |
---|---|---|
committer | Romanos Skiadas <rski@intracom-telecom.com> | 2016-11-18 16:49:19 +0200 |
commit | 5b2b4922740b2f189b1be2192d8e405fb9a535bb (patch) | |
tree | b30e81f711f111c943959647c67611466724fa85 /test/functest/config.py | |
parent | 9492d419754c44ea38e6751a91b0c3625afccb07 (diff) |
Refactor config global variables
- Create config.py module to handle configuration parsing
- Remove globals from testcases
Change-Id: I16ed7bb138fde2d5d3c69703e3c2e569d49f0b37
Signed-off-by: George Paraskevopoulos <geopar@intracom-telecom.com>
Diffstat (limited to 'test/functest/config.py')
-rw-r--r-- | test/functest/config.py | 50 |
1 files changed, 50 insertions, 0 deletions
diff --git a/test/functest/config.py b/test/functest/config.py new file mode 100644 index 0000000..5280a89 --- /dev/null +++ b/test/functest/config.py @@ -0,0 +1,50 @@ +import yaml +import os + +import functest.utils.functest_logger as ft_logger +import functest.utils.functest_utils as ft_utils + +logger = ft_logger.Logger("sndvpn_test_config").getLogger() + + +class CommonConfig(object): + """ + Common configuration parameters across testcases + """ + def __init__(self): + self.repo_path = os.path.join(os.environ['repos_dir'], 'sdnvpn') + self.config_file = os.path.join(self.repo_path, + 'test/functest/config.yaml') + self.keyfile_path = os.path.join(self.repo_path, + 'test/functest/id_rsa') + self.test_db = ft_utils.get_functest_config("results.test_db_url") + self.line_length = 90 # length for the summary table + self.vm_boot_timeout = 180 + self.default_flavor = ft_utils.get_parameter_from_yaml( + "defaults.flavor", self.config_file) + self.image_filename = ft_utils.get_functest_config( + "general.openstack.image_file_name") + self.image_format = ft_utils.get_functest_config( + "general.openstack.image_disk_format") + self.image_path = '{0}/{1}'.format( + ft_utils.get_functest_config( + "general.directories.dir_functest_data"), + self.image_filename) + + +class TestcaseConfig(object): + """ + Configuration for a testcase. + Parse config.yaml into a dict and create an object out of it. + """ + def __init__(self, testcase): + common_config = CommonConfig() + test_config = None + with open(common_config.config_file) as f: + testcases_yaml = yaml.safe_load(f) + test_config = testcases_yaml['testcases'].get(testcase, None) + if test_config is None: + logger.error('Test {0} configuration is not present in {1}' + .format(testcase, common_config.config_file)) + # Update class fields with configuration variables dynamically + self.__dict__.update(**test_config) |