summaryrefslogtreecommitdiffstats
path: root/scripts/utils/dovetail_utils.py
diff options
context:
space:
mode:
authorLeo Wang <grakiss.wanglei@huawei.com>2016-09-22 21:56:54 -0400
committerLeo Wang <grakiss.wanglei@huawei.com>2016-09-30 05:30:22 -0400
commit39942dc9c5bc152a6ed20534755cc0dc38d85ede (patch)
tree8d4a980e7454b26cd97216a8e91de6c947692e9a /scripts/utils/dovetail_utils.py
parentc554b6951f8ee8298d3f8ae8f53ba468dbf4c164 (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.py33
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
+