summaryrefslogtreecommitdiffstats
path: root/qtip/loader/base.py
diff options
context:
space:
mode:
authorYujun Zhang <zhang.yujunz@zte.com.cn>2017-01-19 16:58:46 +0800
committerYujun Zhang <zhang.yujunz@zte.com.cn>2017-01-29 20:34:56 +0800
commitf2d021c72b38845954755bab54aa13b4b2aad725 (patch)
tree384b0aa7772facb1e8f836a4741f8151ef119901 /qtip/loader/base.py
parenta42b9a6ac576b11403955ff38df6cc58cf02abb7 (diff)
Refactor loader classes
- rename BaseLoader to YamlFileLoader as base class of QTIP specs loader - create an abstract BaseLoader - create FileLoader for logfile collector Change-Id: I0c992cd847fc0dce4fdd73a13c1cdbc406c84532 Signed-off-by: Yujun Zhang <zhang.yujunz@zte.com.cn>
Diffstat (limited to 'qtip/loader/base.py')
-rw-r--r--qtip/loader/base.py53
1 files changed, 1 insertions, 52 deletions
diff --git a/qtip/loader/base.py b/qtip/loader/base.py
index a0e5d031..abc254bf 100644
--- a/qtip/loader/base.py
+++ b/qtip/loader/base.py
@@ -7,57 +7,6 @@
# http://www.apache.org/licenses/LICENSE-2.0
##############################################################################
-from collections import defaultdict
-from itertools import chain
-from os import listdir
-from os import path
-import yaml
-
-from qtip.base.error import InvalidFormat, NotFound
-from qtip.base.constant import BaseProp
-
-
-ROOT_DIR = path.join(path.dirname(__file__), path.pardir, path.pardir,
- 'benchmarks')
-
class BaseLoader(object):
- """Abstract class of QTIP benchmark loader"""
- RELATIVE_PATH = '.'
- _paths = [ROOT_DIR]
-
- def __init__(self, name, paths=None):
- self._file = name
- self._abspath = self._find(name, paths=paths)
- content = defaultdict(lambda: None)
-
- try:
- content.update(yaml.safe_load(file(self._abspath)))
- except yaml.YAMLError:
- # TODO(yujunz) log yaml error
- raise InvalidFormat(self._abspath)
-
- self.name = content[BaseProp.NAME] or path.splitext(name)[0]
- self.content = content
-
- def _find(self, name, paths=None):
- """find a benchmark in searching paths"""
- paths = self._paths if paths is None else paths
- for p in paths:
- abspath = path.join(p, self.RELATIVE_PATH, name)
- if path.exists(abspath):
- return abspath
- raise NotFound(name, paths)
-
- @classmethod
- def list_all(cls, paths=None):
- """list all available benchmarks"""
- paths = cls._paths if paths is None else paths
- names = chain.from_iterable([listdir(path.join(p, cls.RELATIVE_PATH))
- for p in paths])
- for name in names:
- item = cls(name, paths=paths)
- yield {
- BaseProp.NAME: name,
- BaseProp.ABSPATH: item._abspath,
- BaseProp.CONTENT: item.content}
+ """Abstract class of QTIP loader"""