From 0c194ede4dd9eb46b61af49e85527fcc368a8fca Mon Sep 17 00:00:00 2001 From: Morgan Richomme Date: Tue, 14 Mar 2017 16:57:05 +0100 Subject: env variable support for test DB url So far DB url was retrieved from configuration file If you want to use the CI chain (jenkins, testapi, test DB, functest, ..) then you have a problem calling functest will systematically point to the configuration from the repo Supporting env variable allow to avoid post processing in the configuration file and as a consequence offer the possibility to create a local DB to host local results Change-Id: Ie64b8b265827d7f5724c7066a8c173de8cf012e2 Signed-off-by: Morgan Richomme --- functest/tests/unit/utils/test_functest_utils.py | 12 +++++++++++- functest/utils/functest_utils.py | 10 +++++++++- 2 files changed, 20 insertions(+), 2 deletions(-) diff --git a/functest/tests/unit/utils/test_functest_utils.py b/functest/tests/unit/utils/test_functest_utils.py index bb836011..8bfdb5e4 100644 --- a/functest/tests/unit/utils/test_functest_utils.py +++ b/functest/tests/unit/utils/test_functest_utils.py @@ -56,6 +56,7 @@ class FunctestUtilsTesting(unittest.TestCase): self.testcase_dict = {'name': 'testname', 'criteria': self.criteria} self.parameter = 'general.openstack.image_name' self.config_yaml = 'test_config_yaml-' + self.db_url_env = 'http://foo/testdb' self.file_yaml = {'general': {'openstack': {'image_name': 'test_image_name'}}} @@ -196,8 +197,17 @@ class FunctestUtilsTesting(unittest.TestCase): self.assertEqual(functest_utils.get_build_tag(), self.build_tag) + def test_get_db_url_env_var(self): + with mock.patch.dict(os.environ, + {'TEST_DB_URL': self.db_url_env, + 'CONFIG_FUNCTEST_YAML': + "./functest/ci/config_functest.yaml"}, + clear=True): + self.assertEqual(functest_utils.get_db_url(), + self.db_url_env) + @mock.patch('functest.utils.functest_utils.get_functest_config') - def test_get_db_url(self, mock_get_functest_config): + def test_get_db_url_default(self, mock_get_functest_config): mock_get_functest_config.return_value = self.db_url self.assertEqual(functest_utils.get_db_url(), self.db_url) mock_get_functest_config.assert_called_once_with('results.test_db_url') diff --git a/functest/utils/functest_utils.py b/functest/utils/functest_utils.py index dbed811a..e5e755d7 100644 --- a/functest/utils/functest_utils.py +++ b/functest/utils/functest_utils.py @@ -151,7 +151,15 @@ def get_db_url(): """ Returns DB URL """ - return get_functest_config('results.test_db_url') + # TODO use CONST mechanism + try: + # if TEST_DB_URL declared in env variable, use it! + db_url = os.environ['TEST_DB_URL'] + except KeyError: + logger.info("DB URL not declared as env variable," + "use local configuration") + db_url = get_functest_config('results.test_db_url') + return db_url def logger_test_results(project, case_name, status, details): -- cgit 1.2.3-korg