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

Side by Side Diff: third_party/WebKit/Tools/Scripts/webkitpy/tool/commands/rebaseline.py

Issue 2152663003: Refactor the buildbot module in webkitpy. (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Fix test Created 4 years, 5 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
OLDNEW
1 # Copyright (c) 2010 Google Inc. All rights reserved. 1 # Copyright (c) 2010 Google Inc. All rights reserved.
2 # 2 #
3 # Redistribution and use in source and binary forms, with or without 3 # Redistribution and use in source and binary forms, with or without
4 # modification, are permitted provided that the following conditions are 4 # modification, are permitted provided that the following conditions are
5 # met: 5 # met:
6 # 6 #
7 # * Redistributions of source code must retain the above copyright 7 # * Redistributions of source code must retain the above copyright
8 # notice, this list of conditions and the following disclaimer. 8 # notice, this list of conditions and the following disclaimer.
9 # * Redistributions in binary form must reproduce the above 9 # * Redistributions in binary form must reproduce the above
10 # copyright notice, this list of conditions and the following disclaimer 10 # copyright notice, this list of conditions and the following disclaimer
(...skipping 78 matching lines...) Expand 10 before | Expand all | Expand 10 after
89 results_directory_option = optparse.make_option("--results-directory", help= "Local results directory to use.") 89 results_directory_option = optparse.make_option("--results-directory", help= "Local results directory to use.")
90 90
91 suffixes_option = optparse.make_option("--suffixes", default=','.join(BASELI NE_SUFFIX_LIST), action="store", 91 suffixes_option = optparse.make_option("--suffixes", default=','.join(BASELI NE_SUFFIX_LIST), action="store",
92 help="Comma-separated-list of file ty pes to rebaseline.") 92 help="Comma-separated-list of file ty pes to rebaseline.")
93 93
94 def __init__(self, options=None): 94 def __init__(self, options=None):
95 super(AbstractRebaseliningCommand, self).__init__(options=options) 95 super(AbstractRebaseliningCommand, self).__init__(options=options)
96 self._baseline_suffix_list = BASELINE_SUFFIX_LIST 96 self._baseline_suffix_list = BASELINE_SUFFIX_LIST
97 self._scm_changes = {'add': [], 'delete': [], 'remove-lines': []} 97 self._scm_changes = {'add': [], 'delete': [], 'remove-lines': []}
98 98
99 def _results_url(self, builder_name, build_number=None):
100 builder = self._tool.buildbot.builder_with_name(builder_name)
101 if build_number:
102 build = builder.build(build_number)
103 return build.results_url()
104 return builder.latest_layout_test_results_url()
105
106 def _add_to_scm_later(self, path): 99 def _add_to_scm_later(self, path):
107 self._scm_changes['add'].append(path) 100 self._scm_changes['add'].append(path)
108 101
109 def _delete_from_scm_later(self, path): 102 def _delete_from_scm_later(self, path):
110 self._scm_changes['delete'].append(path) 103 self._scm_changes['delete'].append(path)
111 104
112 def _print_scm_changes(self): 105 def _print_scm_changes(self):
113 print(json.dumps(self._scm_changes)) 106 print(json.dumps(self._scm_changes))
114 107
115 108
(...skipping 129 matching lines...) Expand 10 before | Expand all | Expand 10 after
245 port = self._tool.port_factory.get_from_builder_name(options.builder) 238 port = self._tool.port_factory.get_from_builder_name(options.builder)
246 if port.reference_files(options.test): 239 if port.reference_files(options.test):
247 if 'png' in self._baseline_suffix_list: 240 if 'png' in self._baseline_suffix_list:
248 _log.warning("Cannot rebaseline image result for reftest: %s", o ptions.test) 241 _log.warning("Cannot rebaseline image result for reftest: %s", o ptions.test)
249 return 242 return
250 assert self._baseline_suffix_list == ['txt'] 243 assert self._baseline_suffix_list == ['txt']
251 244
252 if options.results_directory: 245 if options.results_directory:
253 results_url = 'file://' + options.results_directory 246 results_url = 'file://' + options.results_directory
254 else: 247 else:
255 results_url = self._results_url(options.builder, build_number=option s.build_number) 248 results_url = self._tool.buildbot.results_url(options.builder, build _number=options.build_number)
256 249
257 for suffix in self._baseline_suffix_list: 250 for suffix in self._baseline_suffix_list:
258 self._rebaseline_test(options.builder, options.test, suffix, results _url) 251 self._rebaseline_test(options.builder, options.test, suffix, results _url)
259 self._scm_changes['remove-lines'].append({'builder': options.builder, 't est': options.test}) 252 self._scm_changes['remove-lines'].append({'builder': options.builder, 't est': options.test})
260 253
261 def execute(self, options, args, tool): 254 def execute(self, options, args, tool):
262 self._rebaseline_test_and_update_expectations(options) 255 self._rebaseline_test_and_update_expectations(options)
263 self._print_scm_changes() 256 self._print_scm_changes()
264 257
265 258
(...skipping 50 matching lines...) Expand 10 before | Expand all | Expand 10 after
316 @memoized 309 @memoized
317 def build_data(self): 310 def build_data(self):
318 """Returns a map of Build objects to LayoutTestResult objects. 311 """Returns a map of Build objects to LayoutTestResult objects.
319 312
320 The Build objects are the latest builds for the release builders, 313 The Build objects are the latest builds for the release builders,
321 and LayoutTestResult objects for results fetched from archived layout 314 and LayoutTestResult objects for results fetched from archived layout
322 test results. 315 test results.
323 """ 316 """
324 build_to_results = {} 317 build_to_results = {}
325 for builder_name in self._release_builders(): 318 for builder_name in self._release_builders():
326 builder = self._tool.buildbot.builder_with_name(builder_name) 319 builder_results = self._tool.buildbot.accumulated_results_url_base(b uilder_name)
327 builder_results = builder.latest_layout_test_results()
328 if builder_results: 320 if builder_results:
329 build_to_results[Build(builder_name)] = builder_results 321 build_to_results[Build(builder_name)] = builder_results
330 else: 322 else:
331 raise Exception("No result for builder %s." % builder_name) 323 raise Exception("No result for builder %s." % builder_name)
332 return build_to_results 324 return build_to_results
333 325
334 # The release builders cycle much faster than the debug ones and cover all t he platforms. 326 # The release builders cycle much faster than the debug ones and cover all t he platforms.
335 def _release_builders(self): 327 def _release_builders(self):
336 release_builders = [] 328 release_builders = []
337 for builder_name in self._tool.builders.all_continuous_builder_names(): 329 for builder_name in self._tool.builders.all_continuous_builder_names():
(...skipping 348 matching lines...) Expand 10 before | Expand all | Expand 10 after
686 super(Rebaseline, self).__init__(options=[ 678 super(Rebaseline, self).__init__(options=[
687 self.no_optimize_option, 679 self.no_optimize_option,
688 # FIXME: should we support the platform options in addition to (or i nstead of) --builders? 680 # FIXME: should we support the platform options in addition to (or i nstead of) --builders?
689 self.suffixes_option, 681 self.suffixes_option,
690 self.results_directory_option, 682 self.results_directory_option,
691 optparse.make_option("--builders", default=None, action="append", 683 optparse.make_option("--builders", default=None, action="append",
692 help="Comma-separated-list of builders to pull new baselines from (can also be provided multiple times)."), 684 help="Comma-separated-list of builders to pull new baselines from (can also be provided multiple times)."),
693 ]) 685 ])
694 686
695 def _builders_to_pull_from(self): 687 def _builders_to_pull_from(self):
696 chosen_names = self._tool.user.prompt_with_list( 688 return self._tool.user.prompt_with_list(
697 "Which builder to pull results from:", self._release_builders(), can _choose_multiple=True) 689 "Which builder to pull results from:", self._release_builders(), can _choose_multiple=True)
698 return [self._builder_with_name(name) for name in chosen_names]
699
700 def _builder_with_name(self, name):
701 return self._tool.buildbot.builder_with_name(name)
702 690
703 def execute(self, options, args, tool): 691 def execute(self, options, args, tool):
704 if not args: 692 if not args:
705 _log.error("Must list tests to rebaseline.") 693 _log.error("Must list tests to rebaseline.")
706 return 694 return
707 695
708 if options.builders: 696 if options.builders:
709 builders_to_check = [] 697 builders_to_check = []
710 for builder_names in options.builders: 698 for builder_names in options.builders:
711 builders_to_check += [self._builder_with_name(name) for name in builder_names.split(",")] 699 builders_to_check += builder_names.split(",")
712 else: 700 else:
713 builders_to_check = self._builders_to_pull_from() 701 builders_to_check = self._builders_to_pull_from()
714 702
715 test_prefix_list = {} 703 test_prefix_list = {}
716 suffixes_to_update = options.suffixes.split(",") 704 suffixes_to_update = options.suffixes.split(",")
717 705
718 for builder in builders_to_check: 706 for builder in builders_to_check:
719 for test in args: 707 for test in args:
720 if test not in test_prefix_list: 708 if test not in test_prefix_list:
721 test_prefix_list[test] = {} 709 test_prefix_list[test] = {}
722 build = Build(builder.name()) 710 build = Build(builder)
723 test_prefix_list[test][build] = suffixes_to_update 711 test_prefix_list[test][build] = suffixes_to_update
724 712
725 if options.verbose: 713 if options.verbose:
726 _log.debug("rebaseline-json: " + str(test_prefix_list)) 714 _log.debug("rebaseline-json: " + str(test_prefix_list))
727 715
728 self._rebaseline(options, test_prefix_list) 716 self._rebaseline(options, test_prefix_list)
729 717
730 718
731 class AutoRebaseline(AbstractParallelRebaselineCommand): 719 class AutoRebaseline(AbstractParallelRebaselineCommand):
732 name = "auto-rebaseline" 720 name = "auto-rebaseline"
(...skipping 254 matching lines...) Expand 10 before | Expand all | Expand 10 after
987 issue_already_closed = tool.executive.run_command( 975 issue_already_closed = tool.executive.run_command(
988 ['git', 'config', 'branch.%s.rietveldissue' % rebaseline _branch_name], 976 ['git', 'config', 'branch.%s.rietveldissue' % rebaseline _branch_name],
989 return_exit_code=True) 977 return_exit_code=True)
990 if not issue_already_closed: 978 if not issue_already_closed:
991 self._run_git_cl_command(options, ['set_close']) 979 self._run_git_cl_command(options, ['set_close'])
992 980
993 tool.scm().ensure_cleanly_tracking_remote_master() 981 tool.scm().ensure_cleanly_tracking_remote_master()
994 if old_branch_name_or_ref: 982 if old_branch_name_or_ref:
995 tool.scm().checkout_branch(old_branch_name_or_ref) 983 tool.scm().checkout_branch(old_branch_name_or_ref)
996 tool.scm().delete_branch(rebaseline_branch_name) 984 tool.scm().delete_branch(rebaseline_branch_name)
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698