| 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..65664e3da097eca45d0e0614356ad3db617a3d91 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": "",
|
| + # },
|
| + # ],
|
| + # "test2": [
|
| + # {
|
| + # "status": "FAILURE",
|
| + # "elapsed_time_ms": 12,
|
| + # "output_snippet": "",
|
| + # "output_snippet_base64": "",
|
| + # "losless_snippet": "",
|
| + # },
|
| + # ],
|
| + # },
|
| + # ],
|
| + # }
|
| +
|
| assert isinstance(test_run_result, base_test_result.TestRunResults)
|
|
|
| def status_as_string(s):
|
| @@ -71,3 +103,37 @@ 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
|
| + else:
|
| + return base_test_result.ResultType.UNKNOWN
|
| +
|
| + results_list = []
|
| + testsuite_runs = json_results['per_iteration_data']
|
| + for testsuite_run in testsuite_runs:
|
| + for test, test_runs in testsuite_run.iteritems():
|
| + results_list.extend(
|
| + [base_test_result.BaseTestResult(test,
|
| + string_as_status(tr['status']),
|
| + duration=tr['elapsed_time_ms'])
|
| + for tr in test_runs])
|
| + return results_list
|
| +
|
|
|