diff options
author | Morgan Richomme <morgan.richomme@orange.com> | 2017-03-14 16:57:05 +0100 |
---|---|---|
committer | Morgan Richomme <morgan.richomme@orange.com> | 2017-03-16 07:29:12 +0000 |
commit | 95186502a7680a2708c3b1271fd1250a1a171727 (patch) | |
tree | abd825aba4095af78c55ee3f694b28a89bb017c7 | |
parent | 799e5f8cb3bcc4e71a67be56f1b789c20bb129ac (diff) |
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 <morgan.richomme@orange.com>
(cherry picked from commit 0c194ede4dd9eb46b61af49e85527fcc368a8fca)
-rw-r--r-- | functest/tests/unit/utils/test_functest_utils.py | 12 | ||||
-rw-r--r-- | 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 bb8360119..8bfdb5e49 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 dbed811a7..e5e755d7f 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): |