Scenario is reporting result for last test only 95/28195/4
authorchenjiankun <chenjiankun1@huawei.com>
Tue, 7 Feb 2017 17:41:38 +0000 (17:41 +0000)
committerchenjiankun <chenjiankun1@huawei.com>
Wed, 15 Feb 2017 09:10:39 +0000 (09:10 +0000)
JIRA: YARDSTICK-548

If executing Yardstick scenario with multiple tests, result to file is
reported only for the last test.
In attachment screen output and yardstick.out from following command
yardstick task start --suite tests/opnfv/test_suites/opnfv_smoke.yaml
--output-file /mnt/log/yardstick.out

Change-Id: I8aa446b284dca1bbd1667de2f476ddadfad1337f
Signed-off-by: chenjiankun <chenjiankun1@huawei.com>
yardstick/cmd/commands/task.py
yardstick/common/utils.py
yardstick/dispatcher/file.py

index 57c2b15..16a4db2 100644 (file)
@@ -14,7 +14,7 @@ from __future__ import absolute_import
 from yardstick.benchmark.core.task import Task
 from yardstick.common.utils import cliargs
 from yardstick.common.utils import write_json_to_file
-from yardstick.common import constants as consts
+from yardstick.common.utils import read_json_from_file
 from yardstick.cmd.commands import change_osloobj_to_paras
 
 output_file_default = "/tmp/yardstick.out"
@@ -24,7 +24,7 @@ class TaskCommands(object):
     """Task commands.
 
        Set of commands to manage benchmark tasks.
-    """
+       """
 
     @cliargs("inputfile", type=str, help="path to task or suite file", nargs=1)
     @cliargs("--task-args", dest="task_args",
@@ -44,18 +44,25 @@ class TaskCommands(object):
              action="store_true")
     def do_start(self, args, **kwargs):
         param = change_osloobj_to_paras(args)
+        self.output_file = param.output_file
 
         self._init_result_file()
 
         try:
             Task().start(param, **kwargs)
+            self._finish()
         except Exception as e:
             self._write_error_data(e)
 
     def _init_result_file(self):
         data = {'status': 0, 'result': []}
-        write_json_to_file(consts.DEFAULT_OUTPUT_FILE, data)
+        write_json_to_file(self.output_file, data)
+
+    def _finish(self):
+        result = read_json_from_file(self.output_file).get('result')
+        data = {'status': 1, 'result': result}
+        write_json_to_file(self.output_file, data)
 
     def _write_error_data(self, error):
         data = {'status': 2, 'result': str(error)}
-        write_json_to_file(consts.DEFAULT_OUTPUT_FILE, data)
+        write_json_to_file(self.output_file, data)
index 174ac0a..0453619 100644 (file)
@@ -148,6 +148,11 @@ def get_neutron_client():
     return neutron_client
 
 
+def read_json_from_file(path):
+    with open(path, 'r') as f:
+        return jsonutils.load(f)
+
+
 def write_json_to_file(path, data, mode='w'):
     with open(path, mode) as f:
         jsonutils.dump(data, f)
index 8d3c369..6fc81d4 100644 (file)
@@ -39,5 +39,8 @@ class FileDispatcher(DispatchBase):
     def flush_result_data(self):
         file_path = self.conf.get('file_path', consts.DEFAULT_OUTPUT_FILE)
 
-        data = {'status': 1, 'result': self.result}
+        res = utils.read_json_from_file(file_path).get('result')
+        res.extend(self.result)
+
+        data = {'status': 0, 'result': res}
         utils.write_json_to_file(file_path, data)