Chromium Code Reviews| Index: build/android/pylib/results/json_results.py |
| diff --git a/build/android/pylib/results/json_results.py b/build/android/pylib/results/json_results.py |
| index c34244e324952518e3f6ec14ce2b9b63ca15ac1c..bdac35b13130cdeeceadaa31cccfc39f546af3c2 100644 |
| --- a/build/android/pylib/results/json_results.py |
| +++ b/build/android/pylib/results/json_results.py |
| @@ -16,6 +16,38 @@ def GenerateResultsDict(test_run_result): |
| A results dict that mirrors the one generated by |
| base/test/launcher/test_results_tracker.cc:SaveSummaryAsJSON. |
| """ |
| + # Example json output. |
| + # { |
| + # "global_tags": [], |
| + # "all_tests": [ |
| + # "test1", |
| + # "test2", |
| + # ], |
| + # "disabled_tests": [], |
| + # "per_iteration_data": [ |
| + # { |
| + # "test1": [ |
| + # { |
| + # "status": "SUCCESS", |
| + # "elapsed_time_ms": 1, |
| + # "output_snippet": "", |
| + # "output_snippet_base64": "", |
| + # "losless_snippet": "". |
|
jbudorick
2015/03/12 19:41:49
nit: .?
mikecase (-- gone --)
2015/03/13 01:07:23
Done.
|
| + # }, |
| + # ], |
| + # "test2": [ |
| + # { |
| + # "status": "FAILURE", |
| + # "elapsed_time_ms": 12, |
| + # "output_snippet": "", |
| + # "output_snippet_base64": "", |
| + # "losless_snippet": "". |
|
jbudorick
2015/03/12 19:41:49
nit: .?
mikecase (-- gone --)
2015/03/13 01:07:23
Done.
|
| + # }, |
| + # ], |
| + # }, |
| + # ], |
| + # } |
| + |
| assert isinstance(test_run_result, base_test_result.TestRunResults) |
| def status_as_string(s): |
| @@ -71,3 +103,39 @@ def GenerateJsonResultsFile(test_run_result, file_path): |
| with open(file_path, 'w') as json_result_file: |
| json_result_file.write(json.dumps(GenerateResultsDict(test_run_result))) |
| + |
| +def ParseResultsFromJson(json_results): |
| + """Creates a list of BaseTestResult objects from JSON. |
| + |
| + Args: |
| + json_results: A JSON dict in the format created by |
| + GenerateJsonResultsFile. |
| + """ |
| + |
| + def string_as_status(s): |
| + if s == 'SUCCESS': |
| + return base_test_result.ResultType.PASS |
| + elif s == 'SKIPPED': |
| + return base_test_result.ResultType.SKIP |
| + elif s == 'FAILURE': |
| + return base_test_result.ResultType.FAIL |
| + elif s == 'CRASH': |
| + return base_test_result.ResultType.CRASH |
| + elif s == 'TIMEOUT': |
| + return base_test_result.ResultType.TIMEOUT |
| + elif s == 'UNKNOWN': |
|
jbudorick
2015/03/12 19:41:49
This should just be an else case.
mikecase (-- gone --)
2015/03/13 01:07:23
Done.
|
| + return base_test_result.ResultType.UNKNOWN |
| + |
| + results_list = [] |
| + testsuite_runs = json_results['per_iteration_data'] |
| + for testsuite_run in testsuite_runs: |
| + for test in testsuite_run: |
|
jbudorick
2015/03/12 19:41:49
for test, test_runs in testsuite_run.iteritems():
mikecase (-- gone --)
2015/03/13 01:07:23
Done.
|
| + test_runs = testsuite_run[test] |
| + for test_run in test_runs: |
| + name = test |
|
jbudorick
2015/03/12 19:41:49
Why does this exist?
mikecase (-- gone --)
2015/03/13 01:07:23
Done.
|
| + test_type = string_as_status(test_run['status']) |
| + duration_ms = test_run['elapsed_time_ms'] |
| + results_list.append(base_test_result.BaseTestResult( |
| + name, test_type, duration=duration_ms)) |
| + return results_list |
| + |