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 collections |
| 6 import itertools |
5 import json | 7 import json |
6 | 8 |
7 from pylib.base import base_test_result | 9 from pylib.base import base_test_result |
8 | 10 |
9 | 11 |
10 def GenerateResultsDict(test_run_results): | 12 def GenerateResultsDict(test_run_results): |
11 """Create a results dict from |test_run_results| suitable for writing to JSON. | 13 """Create a results dict from |test_run_results| suitable for writing to JSON. |
12 Args: | 14 Args: |
13 test_run_results: a list of base_test_result.TestRunResults objects. | 15 test_run_results: a list of base_test_result.TestRunResults objects. |
14 Returns: | 16 Returns: |
(...skipping 11 matching lines...) Expand all Loading... |
26 # "per_iteration_data": [ | 28 # "per_iteration_data": [ |
27 # { | 29 # { |
28 # "test1": [ | 30 # "test1": [ |
29 # { | 31 # { |
30 # "status": "SUCCESS", | 32 # "status": "SUCCESS", |
31 # "elapsed_time_ms": 1, | 33 # "elapsed_time_ms": 1, |
32 # "output_snippet": "", | 34 # "output_snippet": "", |
33 # "output_snippet_base64": "", | 35 # "output_snippet_base64": "", |
34 # "losless_snippet": "", | 36 # "losless_snippet": "", |
35 # }, | 37 # }, |
| 38 # ... |
36 # ], | 39 # ], |
37 # "test2": [ | 40 # "test2": [ |
38 # { | 41 # { |
39 # "status": "FAILURE", | 42 # "status": "FAILURE", |
40 # "elapsed_time_ms": 12, | 43 # "elapsed_time_ms": 12, |
41 # "output_snippet": "", | 44 # "output_snippet": "", |
42 # "output_snippet_base64": "", | 45 # "output_snippet_base64": "", |
43 # "losless_snippet": "", | 46 # "losless_snippet": "", |
44 # }, | 47 # }, |
| 48 # ... |
45 # ], | 49 # ], |
46 # }, | 50 # }, |
47 # { | 51 # { |
48 # "test1": [ | 52 # "test1": [ |
49 # { | 53 # { |
50 # "status": "SUCCESS", | 54 # "status": "SUCCESS", |
51 # "elapsed_time_ms": 1, | 55 # "elapsed_time_ms": 1, |
52 # "output_snippet": "", | 56 # "output_snippet": "", |
53 # "output_snippet_base64": "", | 57 # "output_snippet_base64": "", |
54 # "losless_snippet": "", | 58 # "losless_snippet": "", |
(...skipping 23 matching lines...) Expand all Loading... |
78 elif s == base_test_result.ResultType.CRASH: | 82 elif s == base_test_result.ResultType.CRASH: |
79 return 'CRASH' | 83 return 'CRASH' |
80 elif s == base_test_result.ResultType.TIMEOUT: | 84 elif s == base_test_result.ResultType.TIMEOUT: |
81 return 'TIMEOUT' | 85 return 'TIMEOUT' |
82 elif s == base_test_result.ResultType.UNKNOWN: | 86 elif s == base_test_result.ResultType.UNKNOWN: |
83 return 'UNKNOWN' | 87 return 'UNKNOWN' |
84 | 88 |
85 all_tests = set() | 89 all_tests = set() |
86 per_iteration_data = [] | 90 per_iteration_data = [] |
87 for test_run_result in test_run_results: | 91 for test_run_result in test_run_results: |
88 iteration_data = { | 92 iteration_data = collections.defaultdict(list) |
89 t.GetName(): [{ | 93 if isinstance(test_run_result, list): |
90 'status': status_as_string(t.GetType()), | 94 results_iterable = itertools.chain(*(t.GetAll() for t in test_run_result)) |
91 'elapsed_time_ms': t.GetDuration(), | 95 else: |
92 'output_snippet': '', | 96 results_iterable = test_run_result.GetAll() |
93 'losless_snippet': '', | 97 |
94 'output_snippet_base64:': '', | 98 for r in results_iterable: |
95 }] | 99 iteration_data[r.GetName()].append({ |
96 for t in test_run_result.GetAll() | 100 'status': status_as_string(r.GetType()), |
97 } | 101 'elapsed_time_ms': r.GetDuration(), |
| 102 'output_snippet': '', |
| 103 'losless_snippet': '', |
| 104 'output_snippet_base64:': '', |
| 105 }) |
| 106 |
98 all_tests = all_tests.union(set(iteration_data.iterkeys())) | 107 all_tests = all_tests.union(set(iteration_data.iterkeys())) |
99 per_iteration_data.append(iteration_data) | 108 per_iteration_data.append(iteration_data) |
100 | 109 |
101 return { | 110 return { |
102 'global_tags': [], | 111 'global_tags': [], |
103 'all_tests': sorted(list(all_tests)), | 112 'all_tests': sorted(list(all_tests)), |
104 # TODO(jbudorick): Add support for disabled tests within base_test_result. | 113 # TODO(jbudorick): Add support for disabled tests within base_test_result. |
105 'disabled_tests': [], | 114 'disabled_tests': [], |
106 'per_iteration_data': per_iteration_data, | 115 'per_iteration_data': per_iteration_data, |
107 } | 116 } |
(...skipping 39 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
147 testsuite_runs = json_results['per_iteration_data'] | 156 testsuite_runs = json_results['per_iteration_data'] |
148 for testsuite_run in testsuite_runs: | 157 for testsuite_run in testsuite_runs: |
149 for test, test_runs in testsuite_run.iteritems(): | 158 for test, test_runs in testsuite_run.iteritems(): |
150 results_list.extend( | 159 results_list.extend( |
151 [base_test_result.BaseTestResult(test, | 160 [base_test_result.BaseTestResult(test, |
152 string_as_status(tr['status']), | 161 string_as_status(tr['status']), |
153 duration=tr['elapsed_time_ms']) | 162 duration=tr['elapsed_time_ms']) |
154 for tr in test_runs]) | 163 for tr in test_runs]) |
155 return results_list | 164 return results_list |
156 | 165 |
OLD | NEW |