--- /dev/null
+##############################################################################
+# Copyright (c) 2017 ZTE Corporation and others.
+#
+# All rights reserved. This program and the accompanying materials
+# are made available under the terms of the Apache License, Version 2.0
+# which accompanies this distribution, and is available at
+# http://www.apache.org/licenses/LICENSE-2.0
+##############################################################################
+name: sample
+description: sample benchmark plan for testing default path
+config:
+ collectors: []
+ reporters: []
+QPIs: []
class LogItem(BaseActor):
- def find(self, filename, paths=None):
- return self._parent.find(filename, paths)
+ def find(self, filename):
+ return self._parent.find(filename)
class LogfileCollector(BaseActor):
self._parent = parent # plan
# TODO(yujunz) handle exception of invalid parent
dirname = os.path.dirname(self._parent.abspath)
- paths = [os.path.join(dirname, p) for p in config.get(self.PATHS, [])]
- self._loader = FileLoader('.', paths)
+ self.paths = [os.path.join(dirname, p) for p in config.get(self.PATHS, [])]
def run(self):
collected = []
collected = chain(collected, reduce(chain, matches))
return reduce(merge_matchobj_to_dict, collected, {'groups': (), 'groupdict': {}})
- def find(self, filename, paths=None):
- return self._loader.find(filename, paths)
+ def find(self, filename):
+ return FileLoader.find(filename, self.paths)
def merge_matchobj_to_dict(d, m):
self._filename = name
self.abspath = self.find(name, paths=paths)
- def find(self, name, paths=None):
+ @classmethod
+ def find(cls, name, paths=None):
"""find a specification in searching paths"""
- paths = [self.abspath] if paths is None else paths
+ paths = cls._paths if paths is None else paths
for p in paths:
- abspath = path.join(p, self.RELATIVE_PATH, name)
+ abspath = path.join(p, cls.RELATIVE_PATH, name)
if path.exists(abspath):
return abspath
raise NotFoundError(name, paths)
--- /dev/null
+##############################################################################
+# Copyright (c) 2017 ZTE Corporation and others.
+#
+# All rights reserved. This program and the accompanying materials
+# are made available under the terms of the Apache License, Version 2.0
+# which accompanies this distribution, and is available at
+# http://www.apache.org/licenses/LICENSE-2.0
+##############################################################################
+name: sample
+description: sample benchmark plan for testing default path
+config:
+ collectors: []
+ reporters: []
+QPIs: []
from qtip.loader.plan import load_collector
from qtip.loader.plan import Plan
from qtip.loader.plan import PlanProp
-from qtip.loader.plan import QPISpec
-def test_init(plan):
- assert plan.name == 'doctor performance profiling'
- assert isinstance(plan.content, dict)
- for qpi in plan.qpis:
- assert isinstance(qpi, QPISpec)
+def test_construct(benchmarks_root):
+ sample = Plan('sample.yaml')
+ assert isinstance(sample, Plan)
+ # fixture can not be used in pytest.mark.parametrized
+ sample = Plan('sample.yaml', [benchmarks_root])
+ assert isinstance(sample, Plan)
+
+
+def test_invalid_construct():
with pytest.raises(TypeError) as excinfo:
Plan()
assert '__init__() takes at least 2 arguments (1 given)' \
def test_list_all(benchmarks_root):
plan_list = list(Plan.list_all(paths=[benchmarks_root]))
- assert len(plan_list) is 2
+ assert len(plan_list) is 3
for desc in plan_list:
assert PlanProp.NAME in desc
assert PlanProp.ABSPATH in desc