summaryrefslogtreecommitdiffstats
path: root/qtip/runner
diff options
context:
space:
mode:
authorYujun Zhang <zhang.yujunz@zte.com.cn>2016-12-27 16:57:28 +0800
committerYujun Zhang <zhang.yujunz@zte.com.cn>2017-01-03 17:34:11 +0800
commitdecad5f7fdb212c4f78fc31f00e591eaba104450 (patch)
tree93ee0cd48f991c83bd9e13a4814cbced2377ca21 /qtip/runner
parent0dbc16c41646cbec79b65ec2ac60b8965cd22db9 (diff)
Add module skeletons
- Remove `suite` and `case` which seems redundant at the moment - Rename `qtip.spec` to `qtip.loader` since the class loads spec - Add driver `sample` which will generate random performance data - Add collector `logfile` which will collect result from log files - Add reporter `console` which will print report to console - Add exception classes See updated class diagram in https://wiki.opnfv.org/display/qtip/Design JIRA: QTIP-148 JIRA: QTIP-193 Change-Id: Idf751d33428176a26224e4443100a142feda6f32 Signed-off-by: Yujun Zhang <zhang.yujunz@zte.com.cn>
Diffstat (limited to 'qtip/runner')
-rw-r--r--qtip/runner/base.py45
-rw-r--r--qtip/runner/case.py17
-rw-r--r--qtip/runner/plan.py21
-rw-r--r--qtip/runner/suite.py22
4 files changed, 55 insertions, 50 deletions
diff --git a/qtip/runner/base.py b/qtip/runner/base.py
new file mode 100644
index 00000000..07fba104
--- /dev/null
+++ b/qtip/runner/base.py
@@ -0,0 +1,45 @@
+##############################################################################
+# Copyright (c) 2016 ZTE Corp 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
+##############################################################################
+
+from qtip.base.constant import PkgName, PropName
+from qtip.base.error import NotFound
+from qtip.collector.logfile import LogfileCollector
+from qtip.driver.sample import SampleDriver
+from qtip.loader.base import BaseLoader
+from qtip.reporter.console import ConsoleReporter
+
+
+class BaseRunner(BaseLoader):
+ def __init__(self, name, paths=None, config=None):
+ super(BaseRunner, self).__init__(name, paths=paths)
+ if config is None:
+ config = self.content[PropName.CONFIG]
+
+ driver_name = config[PropName.DRIVER]
+ collector_name = config[PropName.COLLECTOR]
+ reporter_name = config[PropName.REPORTER]
+
+ # TODO(yujunz) dynamically load modules by name
+
+ if driver_name == 'sample':
+ self.driver = SampleDriver()
+ else:
+ raise NotFound(driver_name, package=PkgName.DRIVER)
+
+ if collector_name == 'logfile':
+ self.collector = LogfileCollector()
+ else:
+ raise NotFound(collector_name,
+ package=PkgName.COLLECTOR)
+
+ if reporter_name == 'console':
+ self.reporter = ConsoleReporter()
+ else:
+ raise NotFound(reporter_name,
+ package=PkgName.REPORTER)
diff --git a/qtip/runner/case.py b/qtip/runner/case.py
deleted file mode 100644
index eb3febc2..00000000
--- a/qtip/runner/case.py
+++ /dev/null
@@ -1,17 +0,0 @@
-##############################################################################
-# Copyright (c) 2016 ZTE Corp 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
-##############################################################################
-
-from qtip.base.benchmark import Property
-from qtip.spec.metric import MetricSpec
-
-
-class Case(object):
- def __init__(self, spec, paths=None):
- self.metric_spec = MetricSpec(spec[Property.METRIC_SPEC], paths=paths)
- self.config = spec[Property.CONFIG]
diff --git a/qtip/runner/plan.py b/qtip/runner/plan.py
index 265ad8d7..f6c1c3bb 100644
--- a/qtip/runner/plan.py
+++ b/qtip/runner/plan.py
@@ -7,20 +7,19 @@
# http://www.apache.org/licenses/LICENSE-2.0
##############################################################################
-from qtip.base.benchmark import Benchmark, Property
-from qtip.runner.suite import Suite
+from qtip.base.constant import PropName
+from qtip.runner.base import BaseRunner
+from qtip.loader.qpi import QPISpec
-class Plan(Benchmark):
+class Plan(BaseRunner):
+ """
+ a benchmark plan is consist of configuration and a QPI list
"""
- a benchmark plan is consist of basic information and several suites"""
- DEFAULT_DIR = 'plans'
+ DEFAULT_DIR = 'plan'
def __init__(self, name, paths=None):
- super(Plan, self).__init__(name, paths=paths)
- content = self.content()
-
- self.info = content[Property.INFO]
- self.suites = [Suite(suite, paths=paths)
- for suite in content[Property.SUITES]]
+ super(Plan, self).__init__(name, paths)
+ self.qpis = [QPISpec(qpi, paths=paths)
+ for qpi in self.content[PropName.QPIS]]
diff --git a/qtip/runner/suite.py b/qtip/runner/suite.py
deleted file mode 100644
index 55033d2b..00000000
--- a/qtip/runner/suite.py
+++ /dev/null
@@ -1,22 +0,0 @@
-##############################################################################
-# Copyright (c) 2016 ZTE Corp 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
-##############################################################################
-
-from qtip.base.benchmark import Property
-from qtip.spec.qpi import QPISpec
-from qtip.runner.case import Case
-
-
-class Suite(object):
- """a suite of benchmark cases under specified condition"""
- def __init__(self, spec, paths=None):
- self._paths = paths
- self.qpi_spec = QPISpec(spec[Property.QPI_SPEC], paths=paths)
- self.condition = spec.get(Property.CONDITION, {})
- self.cases = [Case(case_spec, paths)
- for case_spec in spec.get(Property.CASES, [])]