summaryrefslogtreecommitdiffstats
path: root/test/functest/config.py
diff options
context:
space:
mode:
authorGeorge Paraskevopoulos <geopar@intracom-telecom.com>2016-11-08 14:33:19 +0200
committerRomanos Skiadas <rski@intracom-telecom.com>2016-11-18 16:49:19 +0200
commit5b2b4922740b2f189b1be2192d8e405fb9a535bb (patch)
treeb30e81f711f111c943959647c67611466724fa85 /test/functest/config.py
parent9492d419754c44ea38e6751a91b0c3625afccb07 (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.py50
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)