OLD | NEW |
1 #!/usr/bin/env python | 1 #!/usr/bin/env python |
2 # Copyright (c) 2013 The Chromium Authors. All rights reserved. | 2 # Copyright (c) 2013 The Chromium Authors. All rights reserved. |
3 # Use of this source code is governed by a BSD-style license that can be | 3 # Use of this source code is governed by a BSD-style license that can be |
4 # found in the LICENSE file. | 4 # found in the LICENSE file. |
5 | 5 |
6 """Python utility to compare two CSV files and output HTML results.""" | 6 """Python utility to compare two CSV files and output HTML results.""" |
7 | 7 |
8 | 8 |
9 import csv | 9 import csv |
10 import datetime | 10 import datetime |
(...skipping 45 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
56 def __init__(self, value1, value2, perc_diff): | 56 def __init__(self, value1, value2, perc_diff): |
57 self.value1 = value1 | 57 self.value1 = value1 |
58 self.value2 = value2 | 58 self.value2 = value2 |
59 self.perc_diff = perc_diff | 59 self.perc_diff = perc_diff |
60 | 60 |
61 | 61 |
62 class CsvComparer(object): | 62 class CsvComparer(object): |
63 """Class that compares two telemetry CSV files and outputs HTML results.""" | 63 """Class that compares two telemetry CSV files and outputs HTML results.""" |
64 | 64 |
65 def __init__(self, csv_file1, csv_file2, output_html_dir, requester_email, | 65 def __init__(self, csv_file1, csv_file2, output_html_dir, requester_email, |
66 chromium_patch_link, skia_patch_link, | 66 chromium_patch_link, skia_patch_link, benchmark_patch_link, |
67 variance_threshold, absolute_url, min_pages_in_each_field, | 67 variance_threshold, absolute_url, min_pages_in_each_field, |
68 discard_outliers, raw_csv_nopatch, raw_csv_withpatch, | 68 discard_outliers, raw_csv_nopatch, raw_csv_withpatch, |
69 num_repeated, target_platform, crashed_instances, | 69 num_repeated, target_platform, crashed_instances, |
70 missing_devices, browser_args_nopatch, browser_args_withpatch, | 70 missing_devices, browser_args_nopatch, browser_args_withpatch, |
71 pageset_type, chromium_hash, skia_hash, missing_output_slaves, | 71 pageset_type, chromium_hash, skia_hash, missing_output_slaves, |
72 logs_link_prefix, description): | 72 logs_link_prefix, description): |
73 """Constructs a CsvComparer instance.""" | 73 """Constructs a CsvComparer instance.""" |
74 self._csv_file1 = csv_file1 | 74 self._csv_file1 = csv_file1 |
75 self._csv_file2 = csv_file2 | 75 self._csv_file2 = csv_file2 |
76 self._output_html_dir = output_html_dir | 76 self._output_html_dir = output_html_dir |
77 self._requester_email = requester_email | 77 self._requester_email = requester_email |
78 self._chromium_patch_link = chromium_patch_link | 78 self._chromium_patch_link = chromium_patch_link |
79 self._skia_patch_link = skia_patch_link | 79 self._skia_patch_link = skia_patch_link |
| 80 self._benchmark_patch_link = benchmark_patch_link |
80 self._variance_threshold = float(variance_threshold) | 81 self._variance_threshold = float(variance_threshold) |
81 self._absolute_url = absolute_url | 82 self._absolute_url = absolute_url |
82 self._min_pages_in_each_field = min_pages_in_each_field | 83 self._min_pages_in_each_field = min_pages_in_each_field |
83 self._discard_outliers = float(discard_outliers) | 84 self._discard_outliers = float(discard_outliers) |
84 self._raw_csv_nopatch = raw_csv_nopatch | 85 self._raw_csv_nopatch = raw_csv_nopatch |
85 self._raw_csv_withpatch = raw_csv_withpatch | 86 self._raw_csv_withpatch = raw_csv_withpatch |
86 self._num_repeated = num_repeated | 87 self._num_repeated = num_repeated |
87 self._target_platform = target_platform | 88 self._target_platform = target_platform |
88 self._crashed_instances = crashed_instances | 89 self._crashed_instances = crashed_instances |
89 self._missing_devices = missing_devices | 90 self._missing_devices = missing_devices |
(...skipping 199 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
289 reverse=True) | 290 reverse=True) |
290 missing_output_slaves_list = [] | 291 missing_output_slaves_list = [] |
291 if self._missing_output_slaves: | 292 if self._missing_output_slaves: |
292 missing_output_slaves_list = self._missing_output_slaves.split(' ') | 293 missing_output_slaves_list = self._missing_output_slaves.split(' ') |
293 rendered = loader.render_to_string( | 294 rendered = loader.render_to_string( |
294 'csv_totals.html', | 295 'csv_totals.html', |
295 {'sorted_fieldnames_totals_items': sorted_fieldnames_totals_items, | 296 {'sorted_fieldnames_totals_items': sorted_fieldnames_totals_items, |
296 'requester_email': self._requester_email, | 297 'requester_email': self._requester_email, |
297 'chromium_patch_link': self._chromium_patch_link, | 298 'chromium_patch_link': self._chromium_patch_link, |
298 'skia_patch_link': self._skia_patch_link, | 299 'skia_patch_link': self._skia_patch_link, |
| 300 'benchmark_patch_link': self._benchmark_patch_link, |
299 'raw_csv_nopatch': self._raw_csv_nopatch, | 301 'raw_csv_nopatch': self._raw_csv_nopatch, |
300 'raw_csv_withpatch': self._raw_csv_withpatch, | 302 'raw_csv_withpatch': self._raw_csv_withpatch, |
301 'threshold': self._variance_threshold, | 303 'threshold': self._variance_threshold, |
302 'discard_outliers': self._discard_outliers, | 304 'discard_outliers': self._discard_outliers, |
303 'min_webpages': self._min_pages_in_each_field, | 305 'min_webpages': self._min_pages_in_each_field, |
304 'num_repeated': self._num_repeated, | 306 'num_repeated': self._num_repeated, |
305 'target_platform': self._target_platform, | 307 'target_platform': self._target_platform, |
306 'crashed_instances': self._crashed_instances, | 308 'crashed_instances': self._crashed_instances, |
307 'missing_devices': self._missing_devices, | 309 'missing_devices': self._missing_devices, |
308 'browser_args_nopatch': self._browser_args_nopatch, | 310 'browser_args_nopatch': self._browser_args_nopatch, |
(...skipping 44 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
353 option_parser.add_option( | 355 option_parser.add_option( |
354 '', '--requester_email', | 356 '', '--requester_email', |
355 help='Email address of the user who kicked off the run.') | 357 help='Email address of the user who kicked off the run.') |
356 option_parser.add_option( | 358 option_parser.add_option( |
357 '', '--chromium_patch_link', | 359 '', '--chromium_patch_link', |
358 help='Link to the Chromium patch used for this run.') | 360 help='Link to the Chromium patch used for this run.') |
359 option_parser.add_option( | 361 option_parser.add_option( |
360 '', '--skia_patch_link', | 362 '', '--skia_patch_link', |
361 help='Link to the Skia patch used for this run.') | 363 help='Link to the Skia patch used for this run.') |
362 option_parser.add_option( | 364 option_parser.add_option( |
| 365 '', '--benchmark_patch_link', |
| 366 help='Link to the Telemetry patch used for this run.') |
| 367 option_parser.add_option( |
363 '', '--variance_threshold', | 368 '', '--variance_threshold', |
364 help='The allowable variance in percentage between total values for each ' | 369 help='The allowable variance in percentage between total values for each ' |
365 'field for the two CSVs.') | 370 'field for the two CSVs.') |
366 option_parser.add_option( | 371 option_parser.add_option( |
367 '', '--absolute_url', | 372 '', '--absolute_url', |
368 help='Servers like Google Storage require an absolute url for links ' | 373 help='Servers like Google Storage require an absolute url for links ' |
369 'within the HTML output files.', | 374 'within the HTML output files.', |
370 default='') | 375 default='') |
371 option_parser.add_option( | 376 option_parser.add_option( |
372 '', '--min_pages_in_each_field', | 377 '', '--min_pages_in_each_field', |
(...skipping 47 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
420 option_parser.add_option( | 425 option_parser.add_option( |
421 '', '--logs_link_prefix', | 426 '', '--logs_link_prefix', |
422 help='Prefix link to the logs of the slaves.') | 427 help='Prefix link to the logs of the slaves.') |
423 option_parser.add_option( | 428 option_parser.add_option( |
424 '', '--description', | 429 '', '--description', |
425 help='The description of the run as entered by the requester.') | 430 help='The description of the run as entered by the requester.') |
426 | 431 |
427 options, unused_args = option_parser.parse_args() | 432 options, unused_args = option_parser.parse_args() |
428 if not (options.csv_file1 and options.csv_file2 and options.output_html_dir | 433 if not (options.csv_file1 and options.csv_file2 and options.output_html_dir |
429 and options.variance_threshold and options.requester_email | 434 and options.variance_threshold and options.requester_email |
430 and options.chromium_patch_link | 435 and options.chromium_patch_link and options.benchmark_patch_link |
431 and options.skia_patch_link and options.raw_csv_nopatch | 436 and options.skia_patch_link and options.raw_csv_nopatch |
432 and options.raw_csv_withpatch and options.num_repeated | 437 and options.raw_csv_withpatch and options.num_repeated |
433 and options.target_platform and options.pageset_type | 438 and options.target_platform and options.pageset_type |
434 and options.chromium_hash and options.skia_hash | 439 and options.chromium_hash and options.skia_hash |
435 and options.description): | 440 and options.description): |
436 option_parser.error('Must specify csv_file1, csv_file2, output_html_dir, ' | 441 option_parser.error('Must specify csv_file1, csv_file2, output_html_dir, ' |
437 'variance_threshold, requester_email, ' | 442 'variance_threshold, requester_email, ' |
438 'chromium_patch_link, ' | 443 'chromium_patch_link, benchmark_patch_link, ' |
439 'skia_patch_link, raw_csv_nopatch, description, ' | 444 'skia_patch_link, raw_csv_nopatch, description, ' |
440 'raw_csv_withpatch, num_repeated, pageset_type, ' | 445 'raw_csv_withpatch, num_repeated, pageset_type, ' |
441 'chromium_hash, skia_hash and target_platform') | 446 'chromium_hash, skia_hash and target_platform') |
442 | 447 |
443 sys.exit(CsvComparer( | 448 sys.exit(CsvComparer( |
444 options.csv_file1, options.csv_file2, options.output_html_dir, | 449 options.csv_file1, options.csv_file2, options.output_html_dir, |
445 options.requester_email, options.chromium_patch_link, | 450 options.requester_email, options.chromium_patch_link, |
446 options.skia_patch_link, | 451 options.skia_patch_link, options.benchmark_patch_link, |
447 options.variance_threshold, options.absolute_url, | 452 options.variance_threshold, options.absolute_url, |
448 options.min_pages_in_each_field, options.discard_outliers, | 453 options.min_pages_in_each_field, options.discard_outliers, |
449 options.raw_csv_nopatch, options.raw_csv_withpatch, | 454 options.raw_csv_nopatch, options.raw_csv_withpatch, |
450 options.num_repeated, options.target_platform, | 455 options.num_repeated, options.target_platform, |
451 options.crashed_instances, options.missing_devices, | 456 options.crashed_instances, options.missing_devices, |
452 options.browser_args_nopatch, options.browser_args_withpatch, | 457 options.browser_args_nopatch, options.browser_args_withpatch, |
453 options.pageset_type, options.chromium_hash, options.skia_hash, | 458 options.pageset_type, options.chromium_hash, options.skia_hash, |
454 options.missing_output_slaves, options.logs_link_prefix, | 459 options.missing_output_slaves, options.logs_link_prefix, |
455 options.description).Compare()) | 460 options.description).Compare()) |
456 | 461 |
OLD | NEW |