OLD | NEW |
1 # Copyright 2014 The Chromium Authors. All rights reserved. | 1 # Copyright 2014 The Chromium Authors. All rights reserved. |
2 # Use of this source code is governed by a BSD-style license that can be | 2 # Use of this source code is governed by a BSD-style license that can be |
3 # found in the LICENSE file. | 3 # found in the LICENSE file. |
4 | 4 |
| 5 import json |
5 import os | 6 import os |
| 7 import tempfile |
6 | 8 |
7 from pylib import cmd_helper | 9 from pylib import cmd_helper |
8 from pylib import constants | 10 from pylib import constants |
| 11 from pylib.base import base_test_result |
9 | 12 |
10 class JavaTestRunner(object): | 13 class JavaTestRunner(object): |
11 """Runs java tests on the host.""" | 14 """Runs java tests on the host.""" |
12 | 15 |
13 def __init__(self, args): | 16 def __init__(self, args): |
14 self._package_filter = args.package_filter | 17 self._package_filter = args.package_filter |
15 self._runner_filter = args.runner_filter | 18 self._runner_filter = args.runner_filter |
16 self._sdk_version = args.sdk_version | 19 self._sdk_version = args.sdk_version |
17 self._test_filter = args.test_filter | 20 self._test_filter = args.test_filter |
18 self._test_suite = args.test_suite | 21 self._test_suite = args.test_suite |
19 | 22 |
20 def SetUp(self): | 23 def SetUp(self): |
21 pass | 24 pass |
22 | 25 |
| 26 def _ParseResultsFromJson(self, json_results): |
| 27 results_list = [] |
| 28 testsuite_runs = json_results['per_iteration_data'] |
| 29 for testsuite_run in testsuite_runs: |
| 30 for test in testsuite_run: |
| 31 test_runs = testsuite_run[test] |
| 32 for test_run in test_runs: |
| 33 name = test |
| 34 if test_run['status'] == 'SUCCESS': |
| 35 test_type = base_test_result.ResultType.PASS |
| 36 elif test_run['status'] == 'FAILURE': |
| 37 test_type = base_test_result.ResultType.FAIL |
| 38 else: |
| 39 test_type = base_test_result.ResultType.UNKNOWN |
| 40 duration_ms = test_run['elapsed_time_ms'] |
| 41 results_list.append(base_test_result.BaseTestResult( |
| 42 name, test_type, duration=duration_ms)) |
| 43 return results_list |
| 44 |
23 def RunTest(self, _test): | 45 def RunTest(self, _test): |
24 """Runs junit tests from |self._test_suite|.""" | 46 """Runs junit tests from |self._test_suite|.""" |
25 command = ['java', | 47 with tempfile.NamedTemporaryFile() as json_file: |
26 '-jar', os.path.join(constants.GetOutDirectory(), 'lib.java', | 48 command = ['java', |
27 '%s.jar' % self._test_suite)] | 49 '-jar', os.path.join(constants.GetOutDirectory(), 'lib.java', |
28 if self._test_filter: | 50 '%s.jar' % self._test_suite), '-json-results-file', |
29 command.extend(['-gtest-filter', self._test_filter]) | 51 json_file.name] |
30 if self._package_filter: | 52 if self._test_filter: |
31 command.extend(['-package-filter', self._package_filter]) | 53 command.extend(['-gtest-filter', self._test_filter]) |
32 if self._runner_filter: | 54 if self._package_filter: |
33 command.extend(['-runner-filter', self._runner_filter]) | 55 command.extend(['-package-filter', self._package_filter]) |
34 if self._sdk_version: | 56 if self._runner_filter: |
35 command.extend(['-sdk-version', self._sdk_version]) | 57 command.extend(['-runner-filter', self._runner_filter]) |
36 return cmd_helper.RunCmd(command) | 58 if self._sdk_version: |
| 59 command.extend(['-sdk-version', self._sdk_version]) |
| 60 return_code = cmd_helper.RunCmd(command) |
| 61 results_list = self._ParseResultsFromJson(json.loads(json_file.read())) |
| 62 return (results_list, return_code) |
37 | 63 |
38 def TearDown(self): | 64 def TearDown(self): |
39 pass | 65 pass |
40 | 66 |
OLD | NEW |