From: chenjiankun Date: Wed, 3 May 2017 01:05:01 +0000 (+0000) Subject: Bugfix: KeyError when using http dispatcher X-Git-Tag: opnfv-5.0.RC1~485^2 X-Git-Url: https://gerrit.opnfv.org/gerrit/gitweb?a=commitdiff_plain;h=refs%2Fchanges%2F91%2F34091%2F2;p=yardstick.git Bugfix: KeyError when using http dispatcher JIRA: YARDSTICK-632 When we use http dispatcher to output yardstick result. It can upload data, but when we query the data, it get a KeyError. Change-Id: I5410c207c68cff2621ff8184ae17daa4c286cea5 Signed-off-by: chenjiankun --- diff --git a/yardstick/benchmark/runners/base.py b/yardstick/benchmark/runners/base.py index 7c76e42df..b48ed973a 100755 --- a/yardstick/benchmark/runners/base.py +++ b/yardstick/benchmark/runners/base.py @@ -22,6 +22,7 @@ import logging import multiprocessing import subprocess import time +import os import traceback from oslo_config import cfg @@ -40,7 +41,11 @@ def _output_serializer_main(filename, queue, config): Use of this process enables multiple instances of a scenario without messing up the output file. """ - out_type = config['yardstick'].get('DEFAULT', {}).get('dispatcher', 'file') + try: + out_type = config['yardstick'].get('DEFAULT', {})['dispatcher'] + except KeyError: + out_type = os.environ.get('DISPATCHER', 'file') + conf = { 'type': out_type.capitalize(), 'file_path': filename diff --git a/yardstick/dispatcher/http.py b/yardstick/dispatcher/http.py index e3bcbc89b..0d8d2a346 100644 --- a/yardstick/dispatcher/http.py +++ b/yardstick/dispatcher/http.py @@ -32,7 +32,7 @@ LOG = logging.getLogger(__name__) CONF = cfg.CONF http_dispatcher_opts = [ cfg.StrOpt('target', - default='http://127.0.0.1:8000/results', + default=os.getenv('TARGET', 'http://127.0.0.1:8000/results'), 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'), @@ -62,7 +62,8 @@ class HttpDispatcher(DispatchBase): "description": "yardstick test cases result", "pod_name": os.environ.get('NODE_NAME', 'unknown'), "installer": os.environ.get('INSTALLER_TYPE', 'unknown'), - "version": os.environ.get('YARDSTICK_VERSION', 'unknown') + "version": os.environ.get('YARDSTICK_VERSION', 'unknown'), + "build_tag": os.environ.get('BUILD_TAG') } def record_result_data(self, data): @@ -75,7 +76,7 @@ class HttpDispatcher(DispatchBase): 'be posted.') return - self.result["details"] = self.raw_result + self.result["details"] = {'results': self.raw_result} case_name = "" for v in self.raw_result: