Bugfix: KeyError when using http dispatcher 91/34091/2
authorchenjiankun <chenjiankun1@huawei.com>
Wed, 3 May 2017 01:05:01 +0000 (01:05 +0000)
committerchenjiankun <chenjiankun1@huawei.com>
Wed, 3 May 2017 02:16:29 +0000 (02:16 +0000)
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 <chenjiankun1@huawei.com>
yardstick/benchmark/runners/base.py
yardstick/dispatcher/http.py

index 7c76e42..b48ed97 100755 (executable)
@@ -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
index e3bcbc8..0d8d2a3 100644 (file)
@@ -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: