summaryrefslogtreecommitdiffstats
path: root/yardstick/dispatcher
diff options
context:
space:
mode:
authorchenjiankun <chenjiankun1@huawei.com>2017-02-25 00:48:07 +0000
committerchenjiankun <chenjiankun1@huawei.com>2017-03-08 08:42:32 +0000
commitaf3478e95314b5147c7837831dc8113d552ba067 (patch)
treee9411bebe78eca2f0d204d8a49464e7f620a0ff1 /yardstick/dispatcher
parent501175fbb095a771f5f1b9fb80dcf729192214d2 (diff)
Bugfix: yardstick will create stacks with the same name when run using API in parallel
JIRA: YARDSTICK-575 Currently yardstick will create stacks with the same name when run using API in parallel. The reason is there is a global variable in context base and the core will always deploy the first context in Context.list. When run in parallel, it will run in the one process. So yardstick will deploy stacks with the same name. The solution is do not use Context.list in yardstick core. And using a local variable instead. BTW, if we use API to call yardstick core, we can not config the output way. So I parse yardstick.conf when task start. And I think we can include scenario_cfg, context_cfg, yardstick_cfg in one config object later so that we can get all config in one object. Change-Id: I1ada4ef486bd252e78c3a2e49c6a39b3f8f16a7c Signed-off-by: chenjiankun <chenjiankun1@huawei.com>
Diffstat (limited to 'yardstick/dispatcher')
-rw-r--r--yardstick/dispatcher/base.py4
-rw-r--r--yardstick/dispatcher/file.py2
-rw-r--r--yardstick/dispatcher/http.py2
-rw-r--r--yardstick/dispatcher/influxdb.py38
4 files changed, 11 insertions, 35 deletions
diff --git a/yardstick/dispatcher/base.py b/yardstick/dispatcher/base.py
index 09ce8d1e8..a1c858297 100644
--- a/yardstick/dispatcher/base.py
+++ b/yardstick/dispatcher/base.py
@@ -38,10 +38,10 @@ class Base(object):
raise RuntimeError("No such dispatcher_type %s" % dispatcher_type)
@staticmethod
- def get(config):
+ def get(conf, config):
"""Returns instance of a dispatcher for dispatcher type.
"""
- return Base.get_cls(config["type"])(config)
+ return Base.get_cls(conf["type"])(conf, config)
@abc.abstractmethod
def record_result_data(self, data):
diff --git a/yardstick/dispatcher/file.py b/yardstick/dispatcher/file.py
index 6fc81d419..8acd5dfbb 100644
--- a/yardstick/dispatcher/file.py
+++ b/yardstick/dispatcher/file.py
@@ -29,7 +29,7 @@ class FileDispatcher(DispatchBase):
__dispatcher_type__ = "File"
- def __init__(self, conf):
+ def __init__(self, conf, config):
super(FileDispatcher, self).__init__(conf)
self.result = []
diff --git a/yardstick/dispatcher/http.py b/yardstick/dispatcher/http.py
index 790086155..e3bcbc89b 100644
--- a/yardstick/dispatcher/http.py
+++ b/yardstick/dispatcher/http.py
@@ -51,7 +51,7 @@ class HttpDispatcher(DispatchBase):
__dispatcher_type__ = "Http"
- def __init__(self, conf):
+ def __init__(self, conf, config):
super(HttpDispatcher, self).__init__(conf)
self.headers = {'Content-type': 'application/json'}
self.timeout = CONF.dispatcher_http.timeout
diff --git a/yardstick/dispatcher/influxdb.py b/yardstick/dispatcher/influxdb.py
index d388d28a1..10fff4d1f 100644
--- a/yardstick/dispatcher/influxdb.py
+++ b/yardstick/dispatcher/influxdb.py
@@ -15,7 +15,6 @@ import time
import requests
import six
-from oslo_config import cfg
from oslo_serialization import jsonutils
from third_party.influxdb.influxdb_line_protocol import make_lines
@@ -23,30 +22,6 @@ from yardstick.dispatcher.base import Base as DispatchBase
LOG = logging.getLogger(__name__)
-CONF = cfg.CONF
-influx_dispatcher_opts = [
- cfg.StrOpt('target',
- default='http://127.0.0.1:8086',
- help='The target where the http request will be sent. '
- 'If this is not set, no data will be posted. For '
- 'example: target = http://hostname:1234/path'),
- cfg.StrOpt('db_name',
- default='yardstick',
- help='The database name to store test results.'),
- cfg.StrOpt('username',
- default='root',
- help='The user name to access database.'),
- cfg.StrOpt('password',
- default='root',
- help='The user password to access database.'),
- cfg.IntOpt('timeout',
- default=5,
- help='The max time in seconds to wait for a request to '
- 'timeout.'),
-]
-
-CONF.register_opts(influx_dispatcher_opts, group="dispatcher_influxdb")
-
class InfluxdbDispatcher(DispatchBase):
"""Dispatcher class for posting data into an influxdb target.
@@ -54,13 +29,14 @@ class InfluxdbDispatcher(DispatchBase):
__dispatcher_type__ = "Influxdb"
- def __init__(self, conf):
+ def __init__(self, conf, config):
super(InfluxdbDispatcher, self).__init__(conf)
- self.timeout = CONF.dispatcher_influxdb.timeout
- self.target = CONF.dispatcher_influxdb.target
- self.db_name = CONF.dispatcher_influxdb.db_name
- self.username = CONF.dispatcher_influxdb.username
- self.password = CONF.dispatcher_influxdb.password
+ db_conf = config['yardstick'].get('dispatcher_influxdb', {})
+ self.timeout = int(db_conf.get('timeout', 5))
+ self.target = db_conf.get('target', 'http://127.0.0.1:8086')
+ self.db_name = db_conf.get('db_name', 'yardstick')
+ self.username = db_conf.get('username', 'root')
+ self.password = db_conf.get('password', 'root')
self.influxdb_url = "%s/write?db=%s" % (self.target, self.db_name)
self.raw_result = []
self.case_name = ""