From b3071ecf941d030092a33086c4d632ed88c52bcf Mon Sep 17 00:00:00 2001 From: chenjiankun Date: Mon, 31 Oct 2016 12:56:38 +0000 Subject: Create a constants.py to manage constant variable consistently JIRA: YARDSTICK-378 Change-Id: I527d4f60f2a2081730118bdbbea6c19fc093672f Signed-off-by: chenjiankun --- setup.py | 2 +- tests/unit/common/config_sample.yaml | 2 ++ tests/unit/common/test_utils.py | 27 +++++++++++++++++++++++++++ yardstick/common/constants.py | 3 +++ yardstick/common/utils.py | 23 +++++++++++++++++++++++ 5 files changed, 56 insertions(+), 1 deletion(-) create mode 100644 tests/unit/common/config_sample.yaml create mode 100644 yardstick/common/constants.py diff --git a/setup.py b/setup.py index 4fe2596c8..9bf656bac 100755 --- a/setup.py +++ b/setup.py @@ -66,5 +66,5 @@ setup( scripts=['tools/yardstick-img-modify', 'tools/yardstick-img-lxd-modify', 'tools/yardstick-img-dpdk-modify' - ] + ] ) diff --git a/tests/unit/common/config_sample.yaml b/tests/unit/common/config_sample.yaml new file mode 100644 index 000000000..8caa19ec6 --- /dev/null +++ b/tests/unit/common/config_sample.yaml @@ -0,0 +1,2 @@ +releng: + dir: /home/opnfv/repos/releng diff --git a/tests/unit/common/test_utils.py b/tests/unit/common/test_utils.py index 002d0494c..a64c1f1ab 100644 --- a/tests/unit/common/test_utils.py +++ b/tests/unit/common/test_utils.py @@ -83,6 +83,33 @@ class ImportModulesFromPackageTestCase(unittest.TestCase): mock_importutils.import_module.assert_called_with('bar.baz') +class GetParaFromYaml(unittest.TestCase): + + def test_get_para_from_yaml_file_not_exist(self): + file_path = '/etc/yardstick/hello.yaml' + args = 'hello.world' + para = utils.get_para_from_yaml(file_path, args) + self.assertIsNone(para) + + def test_get_para_from_yaml_para_not_found(self): + file_path = 'config_sample.yaml' + file_path = self._get_file_abspath(file_path) + args = 'releng.file' + self.assertIsNone(utils.get_para_from_yaml(file_path, args)) + + def test_get_para_from_yaml_para_exists(self): + file_path = 'config_sample.yaml' + file_path = self._get_file_abspath(file_path) + args = 'releng.dir' + para = '/home/opnfv/repos/releng' + self.assertEqual(para, utils.get_para_from_yaml(file_path, args)) + + def _get_file_abspath(self, filename): + curr_path = os.path.dirname(os.path.abspath(__file__)) + file_path = os.path.join(curr_path, filename) + return file_path + + def main(): unittest.main() diff --git a/yardstick/common/constants.py b/yardstick/common/constants.py new file mode 100644 index 000000000..40b29a717 --- /dev/null +++ b/yardstick/common/constants.py @@ -0,0 +1,3 @@ +CONFIG_SAMPLE = '/etc/yardstick/config.yaml' + +RELENG_DIR = 'releng.dir' diff --git a/yardstick/common/utils.py b/yardstick/common/utils.py index c482b4da4..d639fb66a 100644 --- a/yardstick/common/utils.py +++ b/yardstick/common/utils.py @@ -17,6 +17,7 @@ import os import sys +import yaml from oslo_utils import importutils import yardstick @@ -68,3 +69,25 @@ def import_modules_from_package(package): new_package = ".".join(root.split(os.sep)).split("....")[1] module_name = "%s.%s" % (new_package, filename[:-3]) try_append_module(module_name, sys.modules) + + +def get_para_from_yaml(file_path, args): + + def func(a, b): + if a is None: + return None + return a.get(b) + + if os.path.exists(file_path): + with open(file_path) as f: + value = yaml.safe_load(f) + value = reduce(func, args.split('.'), value) + + if value is None: + print 'parameter not found' + return None + + return value + else: + print 'file not exist' + return None -- cgit 1.2.3-korg