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

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

Issue 1826633002: [Findit] Extract and pass failed targets from ninja to try-job. (Closed) Base URL: https://chromium.googlesource.com/infra/infra.git@master
Patch Set: Rebase. Created 4 years, 7 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 base64 5 import base64
6 import json 6 import json
7 7
8 from common import constants 8 from common import constants
9 from common.http_client_appengine import HttpClientAppengine as HttpClient 9 from common.http_client_appengine import HttpClientAppengine as HttpClient
10 from common.pipeline_wrapper import BasePipeline 10 from common.pipeline_wrapper import BasePipeline
(...skipping 403 matching lines...) Expand 10 before | Expand all | Expand 10 after
414 ... 414 ...
415 ], 415 ],
416 }, 416 },
417 "25410": { 417 "25410": {
418 "chromium_revision": "4bffcd598dd89e0016208ce9312a1f477ff105d1" 418 "chromium_revision": "4bffcd598dd89e0016208ce9312a1f477ff105d1"
419 "blame_list": [ 419 "blame_list": [
420 "b98e0b320d39a323c81cc0542e6250349183a4df", 420 "b98e0b320d39a323c81cc0542e6250349183a4df",
421 ... 421 ...
422 ], 422 ],
423 } 423 }
424 },
425 "compile_failures": {
426 "failed_targets": ["obj/path/to/file.o"],
427 "unknown_targets": [],
428 "unrecognized_format": false,
424 } 429 }
425 } 430 }
426 """ 431 """
427 build_info = self._ExtractBuildInfo(master_name, builder_name, build_number) 432 build_info = self._ExtractBuildInfo(master_name, builder_name, build_number)
428 433
429 if not build_info: # pragma: no cover 434 if not build_info: # pragma: no cover
430 raise pipeline.Retry('Failed to extract build info.') 435 raise pipeline.Retry('Failed to extract build info.')
431 436
432 build_failure_type = self._GetFailureType(build_info) 437 build_failure_type = self._GetFailureType(build_info)
433 438
434 failure_info = { 439 failure_info = {
435 'failed': True, 440 'failed': True,
436 'master_name': master_name, 441 'master_name': master_name,
437 'builder_name': builder_name, 442 'builder_name': builder_name,
438 'build_number': build_number, 443 'build_number': build_number,
439 'chromium_revision': build_info.chromium_revision, 444 'chromium_revision': build_info.chromium_revision,
440 'builds': {}, 445 'builds': {},
441 'failed_steps': {}, 446 'failed_steps': {},
442 'failure_type': build_failure_type, 447 'failure_type': build_failure_type,
448 'compile_failures': build_info.compile_failures,
443 } 449 }
444 450
445 if build_info.result == buildbot.SUCCESS or not build_info.failed_steps: 451 if build_info.result == buildbot.SUCCESS or not build_info.failed_steps:
446 failure_info['failed'] = False 452 failure_info['failed'] = False
447 return failure_info 453 return failure_info
448 454
449 builds = dict() 455 builds = dict()
450 self._SaveBlamelistAndChromiumRevisionIntoDict(build_info, builds) 456 self._SaveBlamelistAndChromiumRevisionIntoDict(build_info, builds)
451 457
452 failed_steps = self._CreateADictOfFailedSteps(build_info) 458 failed_steps = self._CreateADictOfFailedSteps(build_info)
453 459
454 # Checks first failed builds for each failed step. 460 # Checks first failed builds for each failed step.
455 self._CheckForFirstKnownFailure( 461 self._CheckForFirstKnownFailure(
456 master_name, builder_name, build_number, failed_steps, builds) 462 master_name, builder_name, build_number, failed_steps, builds)
457 463
458 if build_failure_type == failure_type.TEST: 464 if build_failure_type == failure_type.TEST:
459 # Checks first failed builds for each failed test. 465 # Checks first failed builds for each failed test.
460 self._CheckFirstKnownFailureForSwarmingTests( 466 self._CheckFirstKnownFailureForSwarmingTests(
461 master_name, builder_name, build_number, failed_steps, builds) 467 master_name, builder_name, build_number, failed_steps, builds)
462 468
463 failure_info['builds'] = builds 469 failure_info['builds'] = builds
464 failure_info['failed_steps'] = failed_steps 470 failure_info['failed_steps'] = failed_steps
465 471
466 analysis = WfAnalysis.Get(master_name, builder_name, build_number) 472 analysis = WfAnalysis.Get(master_name, builder_name, build_number)
467 analysis.not_passed_steps = build_info.not_passed_steps 473 analysis.not_passed_steps = build_info.not_passed_steps
468 analysis.build_failure_type = build_failure_type 474 analysis.build_failure_type = build_failure_type
469 analysis.put() 475 analysis.put()
470 476
471 return failure_info 477 return failure_info
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698