Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(188)

Side by Side Diff: Tools/Scripts/webkitpy/performance_tests/perftest.py

Issue 26473005: Make sure run-perf-tests script does not fail on console messages (Closed) Base URL: svn://svn.chromium.org/blink/trunk
Patch Set: Created 7 years, 2 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch | Annotate | Revision Log
« no previous file with comments | « no previous file | no next file » | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
1 # Copyright (C) 2012 Google Inc. All rights reserved. 1 # Copyright (C) 2012 Google Inc. All rights reserved.
2 # Copyright (C) 2012 Zoltan Horvath, Adobe Systems Incorporated. All rights rese rved. 2 # Copyright (C) 2012 Zoltan Horvath, Adobe Systems Incorporated. All rights rese rved.
3 # 3 #
4 # Redistribution and use in source and binary forms, with or without 4 # Redistribution and use in source and binary forms, with or without
5 # modification, are permitted provided that the following conditions are 5 # modification, are permitted provided that the following conditions are
6 # met: 6 # met:
7 # 7 #
8 # * Redistributions of source code must retain the above copyright 8 # * Redistributions of source code must retain the above copyright
9 # notice, this list of conditions and the following disclaimer. 9 # notice, this list of conditions and the following disclaimer.
10 # * Redistributions in binary form must reproduce the above 10 # * Redistributions in binary form must reproduce the above
(...skipping 145 matching lines...) Expand 10 before | Expand all | Expand 10 after
156 stdev = math.sqrt(square_sum / (len(sorted_values) - 1)) if len(sorted_v alues) > 1 else 0 156 stdev = math.sqrt(square_sum / (len(sorted_values) - 1)) if len(sorted_v alues) > 1 else 0
157 157
158 _log.info('RESULT %s= %s %s' % (test_name, mean, unit)) 158 _log.info('RESULT %s= %s %s' % (test_name, mean, unit))
159 _log.info('median= %s %s, stdev= %s %s, min= %s %s, max= %s %s' % 159 _log.info('median= %s %s, stdev= %s %s, min= %s %s, max= %s %s' %
160 (median, unit, stdev, unit, sorted_values[0], unit, sorted_values[-1 ], unit)) 160 (median, unit, stdev, unit, sorted_values[0], unit, sorted_values[-1 ], unit))
161 161
162 _description_regex = re.compile(r'^Description: (?P<description>.*)$', re.IG NORECASE) 162 _description_regex = re.compile(r'^Description: (?P<description>.*)$', re.IG NORECASE)
163 _metrics_regex = re.compile(r'^(?P<metric>Time|Malloc|JS Heap):') 163 _metrics_regex = re.compile(r'^(?P<metric>Time|Malloc|JS Heap):')
164 _statistics_keys = ['avg', 'median', 'stdev', 'min', 'max', 'unit', 'values' ] 164 _statistics_keys = ['avg', 'median', 'stdev', 'min', 'max', 'unit', 'values' ]
165 _score_regex = re.compile(r'^(?P<key>' + r'|'.join(_statistics_keys) + r')\s +(?P<value>([0-9\.]+(,\s+)?)+)\s*(?P<unit>.*)') 165 _score_regex = re.compile(r'^(?P<key>' + r'|'.join(_statistics_keys) + r')\s +(?P<value>([0-9\.]+(,\s+)?)+)\s*(?P<unit>.*)')
166 _console_regex = re.compile(r'^CONSOLE MESSAGE:')
166 167
167 def _run_with_driver(self, driver, time_out_ms): 168 def _run_with_driver(self, driver, time_out_ms):
168 output = self.run_single(driver, self.test_path(), time_out_ms) 169 output = self.run_single(driver, self.test_path(), time_out_ms)
169 self._filter_output(output) 170 self._filter_output(output)
170 if self.run_failed(output): 171 if self.run_failed(output):
171 return False 172 return False
172 173
173 current_metric = None 174 current_metric = None
174 for line in re.split('\n', output.text): 175 for line in re.split('\n', output.text):
175 description_match = self._description_regex.match(line) 176 description_match = self._description_regex.match(line)
176 metric_match = self._metrics_regex.match(line) 177 metric_match = self._metrics_regex.match(line)
177 score = self._score_regex.match(line) 178 score = self._score_regex.match(line)
179 console_match = self._console_regex.match(line)
178 180
179 if description_match: 181 if description_match:
180 self._description = description_match.group('description') 182 self._description = description_match.group('description')
181 elif metric_match: 183 elif metric_match:
182 current_metric = metric_match.group('metric').replace(' ', '') 184 current_metric = metric_match.group('metric').replace(' ', '')
183 elif score: 185 elif score:
184 if score.group('key') != 'values': 186 if score.group('key') != 'values':
185 continue 187 continue
186 188
187 metric = self._ensure_metrics(current_metric, score.group('unit' )) 189 metric = self._ensure_metrics(current_metric, score.group('unit' ))
188 metric.append_group(map(lambda value: float(value), score.group( 'value').split(', '))) 190 metric.append_group(map(lambda value: float(value), score.group( 'value').split(', ')))
191 elif console_match:
192 # Ignore console messages such as deprecation warnings.
193 continue
189 else: 194 else:
190 _log.error('ERROR: ' + line) 195 _log.error('ERROR: ' + line)
191 return False 196 return False
192 197
193 return True 198 return True
194 199
195 def _ensure_metrics(self, metric_name, unit=None): 200 def _ensure_metrics(self, metric_name, unit=None):
196 if metric_name not in self._metrics: 201 if metric_name not in self._metrics:
197 self._metrics[metric_name] = PerfTestMetric(metric_name, unit) 202 self._metrics[metric_name] = PerfTestMetric(metric_name, unit)
198 self._ordered_metrics_name.append(metric_name) 203 self._ordered_metrics_name.append(metric_name)
(...skipping 104 matching lines...) Expand 10 before | Expand all | Expand 10 after
303 (re.compile(r'^Dromaeo/'), SingleProcessPerfTest), 308 (re.compile(r'^Dromaeo/'), SingleProcessPerfTest),
304 (re.compile(r'^inspector/'), ChromiumStylePerfTest), 309 (re.compile(r'^inspector/'), ChromiumStylePerfTest),
305 ] 310 ]
306 311
307 @classmethod 312 @classmethod
308 def create_perf_test(cls, port, test_name, path, test_runner_count=DEFAULT_T EST_RUNNER_COUNT): 313 def create_perf_test(cls, port, test_name, path, test_runner_count=DEFAULT_T EST_RUNNER_COUNT):
309 for (pattern, test_class) in cls._pattern_map: 314 for (pattern, test_class) in cls._pattern_map:
310 if pattern.match(test_name): 315 if pattern.match(test_name):
311 return test_class(port, test_name, path, test_runner_count) 316 return test_class(port, test_name, path, test_runner_count)
312 return PerfTest(port, test_name, path, test_runner_count) 317 return PerfTest(port, test_name, path, test_runner_count)
OLDNEW
« no previous file with comments | « no previous file | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698