From ab5e5f5d602c4e5c84f99c2b5ba3b97d3379f5cf Mon Sep 17 00:00:00 2001 From: Yujun Zhang Date: Mon, 5 Dec 2016 15:40:02 +0800 Subject: Implement __init__ and list_all in Suite Change-Id: I97a34610d9f50d6ee81b487d0446eec3f4eea001 Signed-off-by: Yujun Zhang --- qtip/runner/suite.py | 52 ++++++++++++++++++++++++++++++++++++++++++++-------- 1 file changed, 44 insertions(+), 8 deletions(-) (limited to 'qtip') diff --git a/qtip/runner/suite.py b/qtip/runner/suite.py index f0f2f63e..1892bb28 100644 --- a/qtip/runner/suite.py +++ b/qtip/runner/suite.py @@ -7,21 +7,57 @@ # http://www.apache.org/licenses/LICENSE-2.0 ############################################################################## +from itertools import chain +from os import listdir +from os import path + + +class SuiteProperty: + NAME = 'name' + DESCRIPTION = 'description' + ABSPATH = 'abspath' + class Suite: """A suite is consist of one or several perf tests and produces one QPI""" - def __init__(self): - pass + # paths to search for suites + _paths = [path.join(path.dirname(__file__), path.pardir, path.pardir, + 'benchmarks', 'suite')] - @staticmethod - def list_all(): + def __init__(self, name): + """:param name: suite name""" + # TODO(yujunz) check existence and expand to full path + self.name = name + self._abspath = self._find(name) + + def _find(self, name): + """find a suite in searching paths""" + for p in self._paths: + abspath = path.join(p, name) + if path.exists(abspath): + return abspath + return None + + @classmethod + def list_all(cls): """list all available suites""" - pass + suite_names = chain.from_iterable([listdir(p) for p in cls._paths]) + return [Suite(name).describe() for name in suite_names] - def desc(self): - """description of the suite""" - pass + def describe(self): + """description of benchmark suite""" + # TODO(yujunz) + # - read description from suite content + # - verbose mode including even more details + # - referred perftests + # - formula of QPI calculation + # - baseline description + return { + SuiteProperty.NAME: self.name, + SuiteProperty.DESCRIPTION: 'QTIP benchmark suite', + SuiteProperty.ABSPATH: self._abspath + } def run(self): """run included perftests in the suite""" -- cgit 1.2.3-korg