X-Git-Url: https://gerrit.opnfv.org/gerrit/gitweb?a=blobdiff_plain;f=yardstick%2Fcmd%2Fcommands%2Ftask.py;h=16a4db291ed619413bebe2eeade389371f04d007;hb=5699a278956c9deeafb3ec483689d07019048159;hp=d7c0a01fb02fa5eb9b9ca0b28f267cbcbd9ce320;hpb=8f91b0a5c1f47953dd1a14541b71505dbf8f869a;p=yardstick.git diff --git a/yardstick/cmd/commands/task.py b/yardstick/cmd/commands/task.py index d7c0a01fb..16a4db291 100644 --- a/yardstick/cmd/commands/task.py +++ b/yardstick/cmd/commands/task.py @@ -1,4 +1,4 @@ -############################################################################## +############################################################################# # Copyright (c) 2015 Ericsson AB and others. # # All rights reserved. This program and the accompanying materials @@ -9,10 +9,12 @@ """ Handler for yardstick command 'task' """ from __future__ import print_function - 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.utils import read_json_from_file from yardstick.cmd.commands import change_osloobj_to_paras output_file_default = "/tmp/yardstick.out" @@ -22,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", @@ -42,4 +44,25 @@ class TaskCommands(object): action="store_true") def do_start(self, args, **kwargs): param = change_osloobj_to_paras(args) - Task().start(param, **kwargs) + 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(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(self.output_file, data)