summaryrefslogtreecommitdiffstats
path: root/qtip
diff options
context:
space:
mode:
authorYujun Zhang <zhang.yujunz@zte.com.cn>2017-01-19 15:10:01 +0800
committerYujun Zhang <zhang.yujunz@zte.com.cn>2017-01-23 12:16:12 +0800
commitb659a9296223b7f63a89bedbc0dad281117de936 (patch)
treebec6d8f27174089a087ebf9b38cca9b22421b0af /qtip
parentc2c0c70f8f2041fd38c2abb27ba94cbb57cb61f5 (diff)
Formalize constants for property names
Change-Id: I68560b2299c2a815219bc0d0399124e0c269a2c0 Signed-off-by: Yujun Zhang <zhang.yujunz@zte.com.cn>
Diffstat (limited to 'qtip')
-rw-r--r--qtip/base/constant.py29
-rw-r--r--qtip/loader/base.py15
-rw-r--r--qtip/loader/plan.py5
-rw-r--r--qtip/loader/qpi.py14
-rw-r--r--qtip/runner/__init__.py10
5 files changed, 49 insertions, 24 deletions
diff --git a/qtip/base/constant.py b/qtip/base/constant.py
index 76481b47..58cc0cc1 100644
--- a/qtip/base/constant.py
+++ b/qtip/base/constant.py
@@ -25,26 +25,49 @@ class PkgName(object):
SPEC = 'spec'
-class PropName(object):
+class BaseProp(object):
"""property names"""
# list
NAME = 'name'
CONTENT = 'content'
ABSPATH = 'abspath'
+
# content
- name = 'name'
DESCRIPTION = 'description'
+
+
+class SpecProp(BaseProp):
# spec
SECTIONS = 'sections'
WEIGHT = 'weight'
FORMULA = 'formula'
METRICS = 'metrics'
WORKLOADS = 'workloads'
+
+
+class PlanProp(BaseProp):
# plan
- CONFIG = 'config'
+ INFO = 'info'
+
FACILITY = 'facility'
ENGINEER = 'engineer'
+
+ CONFIG = 'config'
+
DRIVER = 'driver'
COLLECTOR = 'collector'
REPORTER = 'reporter'
+
QPIS = 'QPIs'
+
+
+class CollectorProp(BaseProp):
+ LOGS = 'logs'
+ FILENAME = 'filename'
+ PATTERNS = 'patterns'
+ MATCH = 'match'
+ CAPTURE = 'capture'
+
+
+class ReporterBaseProp(BaseProp):
+ TRANSFORMER = 'transformer'
diff --git a/qtip/loader/base.py b/qtip/loader/base.py
index d3a7e1d3..a0e5d031 100644
--- a/qtip/loader/base.py
+++ b/qtip/loader/base.py
@@ -7,13 +7,14 @@
# 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 PropName
+from qtip.base.constant import BaseProp
ROOT_DIR = path.join(path.dirname(__file__), path.pardir, path.pardir,
@@ -28,15 +29,15 @@ class BaseLoader(object):
def __init__(self, name, paths=None):
self._file = name
self._abspath = self._find(name, paths=paths)
+ content = defaultdict(lambda: None)
try:
- content = yaml.safe_load(file(self._abspath))
+ content.update(yaml.safe_load(file(self._abspath)))
except yaml.YAMLError:
# TODO(yujunz) log yaml error
raise InvalidFormat(self._abspath)
- self.name = content[PropName.NAME] if PropName.NAME in content \
- else path.splitext(name)[0]
+ self.name = content[BaseProp.NAME] or path.splitext(name)[0]
self.content = content
def _find(self, name, paths=None):
@@ -57,6 +58,6 @@ class BaseLoader(object):
for name in names:
item = cls(name, paths=paths)
yield {
- PropName.NAME: name,
- PropName.ABSPATH: item._abspath,
- PropName.CONTENT: item.content}
+ BaseProp.NAME: name,
+ BaseProp.ABSPATH: item._abspath,
+ BaseProp.CONTENT: item.content}
diff --git a/qtip/loader/plan.py b/qtip/loader/plan.py
index cf517ea2..c1ee00be 100644
--- a/qtip/loader/plan.py
+++ b/qtip/loader/plan.py
@@ -8,7 +8,7 @@
##############################################################################
-from qtip.base.constant import PropName
+from qtip.base.constant import PlanProp
from qtip.loader.base import BaseLoader
from qtip.loader.qpi import QPISpec
@@ -24,4 +24,5 @@ class Plan(BaseLoader):
super(Plan, self).__init__(name, paths)
self.qpis = [QPISpec(qpi, paths=paths)
- for qpi in self.content[PropName.QPIS]]
+ for qpi in self.content[PlanProp.QPIS]]
+ self.info = self.content[PlanProp.INFO]
diff --git a/qtip/loader/qpi.py b/qtip/loader/qpi.py
index fe2323dd..ef6e065e 100644
--- a/qtip/loader/qpi.py
+++ b/qtip/loader/qpi.py
@@ -10,7 +10,7 @@
from base import BaseLoader
from metric import MetricSpec
-from qtip.base.constant import PropName
+from qtip.base.constant import SpecProp
from qtip.util.formula import Formula
@@ -24,15 +24,15 @@ class QPISpec(BaseLoader):
def __init__(self, name, paths=None):
super(QPISpec, self).__init__(name, paths=paths)
content = self.content
- self.formula = Formula(content[PropName.FORMULA])
+ self.formula = Formula(content[SpecProp.FORMULA])
self.sections = [Section(record, paths=paths)
- for record in content[PropName.SECTIONS]]
+ for record in content[SpecProp.SECTIONS]]
class Section(object):
def __init__(self, content, paths=None):
- self.name = content[PropName.NAME]
- self.weight = content[PropName.WEIGHT]
- self.formula = Formula(content[PropName.FORMULA])
+ self.name = content[SpecProp.NAME]
+ self.weight = content[SpecProp.WEIGHT]
+ self.formula = Formula(content[SpecProp.FORMULA])
self.metrics = [MetricSpec(record, paths=paths)
- for record in content[PropName.METRICS]]
+ for record in content[SpecProp.METRICS]]
diff --git a/qtip/runner/__init__.py b/qtip/runner/__init__.py
index eab81156..1db8498e 100644
--- a/qtip/runner/__init__.py
+++ b/qtip/runner/__init__.py
@@ -7,7 +7,7 @@
# http://www.apache.org/licenses/LICENSE-2.0
##############################################################################
-from qtip.base.constant import PkgName, PropName
+from qtip.base.constant import PkgName, BaseProp
from qtip.base.error import NotFound
from qtip.collector.stdout import StdoutCollector
from qtip.driver.random import RandomDriver
@@ -17,11 +17,11 @@ from qtip.reporter.console import ConsoleReporter
class Runner(object):
def __init__(self, spec, config=None):
if config is None:
- config = spec[PropName.CONFIG]
+ config = spec[BaseProp.CONFIG]
- driver_name = config[PropName.DRIVER]
- collector_name = config[PropName.COLLECTOR]
- reporter_name = config[PropName.REPORTER]
+ driver_name = config[BaseProp.DRIVER]
+ collector_name = config[BaseProp.COLLECTOR]
+ reporter_name = config[BaseProp.REPORTER]
# TODO(yujunz) dynamically load modules by name