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

Side by Side Diff: appengine/findit/waterfall/detect_first_failure_pipeline.py

Issue 1154593005: [Findit] Add a sub-pipeline to analyze failures caused by DEPS rolls. (Closed) Base URL: https://chromium.googlesource.com/infra/infra.git@master
Patch Set: Improve readability. Created 5 years, 6 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 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 5 import collections
6 from datetime import datetime 6 from datetime import datetime
7 import logging 7 import logging
8 import random 8 import random
9 import time 9 import time
10 10
(...skipping 35 matching lines...) Expand 10 before | Expand all | Expand 10 after
46 # Retrieve build data from build archive first. 46 # Retrieve build data from build archive first.
47 build.data = buildbot.GetBuildDataFromArchive( 47 build.data = buildbot.GetBuildDataFromArchive(
48 build.master_name, build.builder_name, build.build_number, 48 build.master_name, build.builder_name, build.build_number,
49 self.HTTP_CLIENT) 49 self.HTTP_CLIENT)
50 50
51 if build.data is None: 51 if build.data is None:
52 if not lock_util.WaitUntilDownloadAllowed( 52 if not lock_util.WaitUntilDownloadAllowed(
53 master_name): # pragma: no cover 53 master_name): # pragma: no cover
54 raise pipeline.Retry('Too many download from %s' % master_name) 54 raise pipeline.Retry('Too many download from %s' % master_name)
55 55
56 # Retrieve build data from build master. 56 # Retrieve build data from build master.
57 build.data = buildbot.GetBuildDataFromBuildMaster( 57 build.data = buildbot.GetBuildDataFromBuildMaster(
58 build.master_name, build.builder_name, build.build_number, 58 build.master_name, build.builder_name, build.build_number,
59 self.HTTP_CLIENT) 59 self.HTTP_CLIENT)
60 60
61 build.last_crawled_time = datetime.utcnow() 61 build.last_crawled_time = datetime.utcnow()
62 build.put() 62 build.put()
63 63
64 return build 64 return build
65 65
66 def _ExtractBuildInfo(self, master_name, builder_name, build_number): 66 def _ExtractBuildInfo(self, master_name, builder_name, build_number):
(...skipping 162 matching lines...) Expand 10 before | Expand all | Expand 10 after
229 build_info = self._ExtractBuildInfo(master_name, builder_name, build_number) 229 build_info = self._ExtractBuildInfo(master_name, builder_name, build_number)
230 230
231 if not build_info: # pragma: no cover 231 if not build_info: # pragma: no cover
232 raise pipeline.Retry('Failed to extract build info.') 232 raise pipeline.Retry('Failed to extract build info.')
233 233
234 failure_info = { 234 failure_info = {
235 'failed': True, 235 'failed': True,
236 'master_name': master_name, 236 'master_name': master_name,
237 'builder_name': builder_name, 237 'builder_name': builder_name,
238 'build_number': build_number, 238 'build_number': build_number,
239 'chromium_revision': build_info.chromium_revision,
239 'builds': {}, 240 'builds': {},
240 'failed_steps': [], 241 'failed_steps': [],
241 } 242 }
242 243
243 if (build_info.result == buildbot.SUCCESS or 244 if (build_info.result == buildbot.SUCCESS or
244 not build_info.failed_steps): 245 not build_info.failed_steps):
245 failure_info['failed'] = False 246 failure_info['failed'] = False
246 return failure_info 247 return failure_info
247 248
248 builds = dict() 249 builds = dict()
249 self._SaveBlamelistAndChromiumRevisionIntoDict(build_info, builds) 250 self._SaveBlamelistAndChromiumRevisionIntoDict(build_info, builds)
250 251
251 failed_steps = self._CreateADictOfFailedSteps(build_info) 252 failed_steps = self._CreateADictOfFailedSteps(build_info)
252 253
253 self._CheckForFirstKnownFailure( 254 self._CheckForFirstKnownFailure(
254 master_name, builder_name, build_number, failed_steps, builds) 255 master_name, builder_name, build_number, failed_steps, builds)
255 256
256 failure_info['builds'] = builds 257 failure_info['builds'] = builds
257 failure_info['failed_steps'] = failed_steps 258 failure_info['failed_steps'] = failed_steps
258 return failure_info 259 return failure_info
OLDNEW
« no previous file with comments | « appengine/findit/waterfall/build_failure_analysis.py ('k') | appengine/findit/waterfall/extract_deps_info_pipeline.py » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698