diff options
author | Leo Wang <grakiss.wanglei@huawei.com> | 2016-09-22 21:56:54 -0400 |
---|---|---|
committer | Leo Wang <grakiss.wanglei@huawei.com> | 2016-09-30 05:30:22 -0400 |
commit | 39942dc9c5bc152a6ed20534755cc0dc38d85ede (patch) | |
tree | 8d4a980e7454b26cd97216a8e91de6c947692e9a /scripts/utils/dovetail_utils.py | |
parent | c554b6951f8ee8298d3f8ae8f53ba468dbf4c164 (diff) |
Use template to unify commands in functest/yardstick
JIRA: DOVETAIL-19
1. use jinja2 to unify commands in config files
2. it simplify the process of test execution, put the dissimilarity in config
3. add precondition/postcondition for functest/yardstick config
Change-Id: Ib996b11ea065b61910b34b78191bb7b1ffd92e59
Signed-off-by: Leo Wang <grakiss.wanglei@huawei.com>
Diffstat (limited to 'scripts/utils/dovetail_utils.py')
-rw-r--r-- | scripts/utils/dovetail_utils.py | 33 |
1 files changed, 32 insertions, 1 deletions
diff --git a/scripts/utils/dovetail_utils.py b/scripts/utils/dovetail_utils.py index f79c6fc4..4c671552 100644 --- a/scripts/utils/dovetail_utils.py +++ b/scripts/utils/dovetail_utils.py @@ -32,7 +32,7 @@ def exec_cmd(cmd, logger=None, stderr=subprocess.STDOUT) output = p.communicate() for line in output[0].strip().split('\n'): - line = line.replace('\n', '') + line = line.replace('\n', '') if logger: if info: logger.info(line) @@ -54,3 +54,34 @@ def exec_cmd(cmd, logger=None, return returncode, output[0].strip() + +#walkthrough the object, yield path and value +from collections import Mapping, Set, Sequence + +# dual python 2/3 compatability, inspired by the "six" library +string_types = (str, unicode) if str is bytes else (str, bytes) +iteritems = lambda mapping: getattr(mapping, 'iteritems', mapping.items)() + +def objwalk(obj, path=(), memo=None): + if memo is None: + memo = set() + iterator = None + if isinstance(obj, Mapping): + iterator = iteritems + elif isinstance(obj, (Sequence, Set)) and not isinstance(obj, string_types): + iterator = enumerate + if iterator: + if id(obj) not in memo: + memo.add(id(obj)) + for path_component, value in iterator(obj): + for result in objwalk(value, path + (path_component,), memo): + yield result + memo.remove(id(obj)) + else: + yield path, obj + +def get_obj_by_path(obj,dst_path): + for path, obj in objwalk(obj): + if path == dst_path: + return obj + |