From f4093d1c2bd64ff53320e9f689d0cd77590bbcee Mon Sep 17 00:00:00 2001 From: chenjiankun Date: Tue, 7 Feb 2017 17:41:38 +0000 Subject: Scenario is reporting result for last test only 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 --- yardstick/cmd/commands/task.py | 15 +++++++++++---- yardstick/common/utils.py | 5 +++++ yardstick/dispatcher/file.py | 5 ++++- 3 files changed, 20 insertions(+), 5 deletions(-) diff --git a/yardstick/cmd/commands/task.py b/yardstick/cmd/commands/task.py index 57c2b1526..16a4db291 100644 --- a/yardstick/cmd/commands/task.py +++ b/yardstick/cmd/commands/task.py @@ -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) diff --git a/yardstick/common/utils.py b/yardstick/common/utils.py index 174ac0a5a..04536190b 100644 --- a/yardstick/common/utils.py +++ b/yardstick/common/utils.py @@ -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) diff --git a/yardstick/dispatcher/file.py b/yardstick/dispatcher/file.py index 8d3c3693d..6fc81d419 100644 --- a/yardstick/dispatcher/file.py +++ b/yardstick/dispatcher/file.py @@ -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) -- cgit 1.2.3-korg