| OLD | NEW |
| 1 # Copyright 2015 The Chromium Authors. All rights reserved. | 1 # Copyright 2015 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 from collections import defaultdict | 5 from collections import defaultdict |
| 6 import os | 6 import os |
| 7 import re | 7 import re |
| 8 | 8 |
| 9 from common.http_client_appengine import HttpClientAppengine as HttpClient | 9 from common.http_client_appengine import HttpClientAppengine as HttpClient |
| 10 from lib.gitiles.diff import ChangeType | 10 from lib.gitiles.diff import ChangeType |
| 11 from lib.gitiles.gitiles_repository import GitilesRepository | 11 from gae_libs.gitiles.cached_gitiles_repository import CachedGitilesRepository |
| 12 from waterfall.failure_signal import FailureSignal | 12 from waterfall.failure_signal import FailureSignal |
| 13 from waterfall import waterfall_config | 13 from waterfall import waterfall_config |
| 14 | 14 |
| 15 | 15 |
| 16 def _IsSameFile(changed_src_file_path, file_path_in_log): | 16 def _IsSameFile(changed_src_file_path, file_path_in_log): |
| 17 """Guesses if the two files are the same. | 17 """Guesses if the two files are the same. |
| 18 | 18 |
| 19 Args: | 19 Args: |
| 20 changed_src_file_path (str): Full path of a file committed to git repo. | 20 changed_src_file_path (str): Full path of a file committed to git repo. |
| 21 file_path_in_log (str): Path of a file appearing in a failure log. It might | 21 file_path_in_log (str): Path of a file appearing in a failure log. It might |
| (...skipping 15 matching lines...) Expand all Loading... |
| 37 | 37 |
| 38 def _GetGitBlame(repo_info, touched_file_path): | 38 def _GetGitBlame(repo_info, touched_file_path): |
| 39 """Gets git blames of touched_file. | 39 """Gets git blames of touched_file. |
| 40 | 40 |
| 41 Args: | 41 Args: |
| 42 repo_info (dict): The repo_url and revision for the build cycle. | 42 repo_info (dict): The repo_url and revision for the build cycle. |
| 43 touched_file_path (str): Full path of a file in change_log. | 43 touched_file_path (str): Full path of a file in change_log. |
| 44 """ | 44 """ |
| 45 if repo_info: | 45 if repo_info: |
| 46 repo_url = repo_info['repo_url'] | 46 repo_url = repo_info['repo_url'] |
| 47 git_repo = GitilesRepository(HttpClient(), repo_url) | 47 git_repo = CachedGitilesRepository(HttpClient(), repo_url) |
| 48 revision = repo_info['revision'] | 48 revision = repo_info['revision'] |
| 49 return git_repo.GetBlame(touched_file_path, revision) | 49 return git_repo.GetBlame(touched_file_path, revision) |
| 50 | 50 |
| 51 | 51 |
| 52 def _GetChangedLinesForChromiumRepo(repo_info, touched_file, line_numbers, | 52 def _GetChangedLinesForChromiumRepo(repo_info, touched_file, line_numbers, |
| 53 suspected_revision): | 53 suspected_revision): |
| 54 """Checks if the CL made change close to the failed line in log. | 54 """Checks if the CL made change close to the failed line in log. |
| 55 | 55 |
| 56 Args: | 56 Args: |
| 57 repo_info (dict): The repo_url and revision for the build cycle. | 57 repo_info (dict): The repo_url and revision for the build cycle. |
| (...skipping 377 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 435 | 435 |
| 436 return None, None | 436 return None, None |
| 437 | 437 |
| 438 | 438 |
| 439 def _GetChangedLinesForDependencyRepo(roll, file_path_in_log, line_numbers): | 439 def _GetChangedLinesForDependencyRepo(roll, file_path_in_log, line_numbers): |
| 440 """Gets changed line numbers for file in failure log. | 440 """Gets changed line numbers for file in failure log. |
| 441 | 441 |
| 442 Tests if the same lines mentioned in failure log are changed within | 442 Tests if the same lines mentioned in failure log are changed within |
| 443 the DEPS roll, if so, return those line numbers. | 443 the DEPS roll, if so, return those line numbers. |
| 444 """ | 444 """ |
| 445 roll_repo = GitilesRepository(HttpClient(), roll['repo_url']) | 445 roll_repo = CachedGitilesRepository(HttpClient(), roll['repo_url']) |
| 446 old_revision = roll['old_revision'] | 446 old_revision = roll['old_revision'] |
| 447 new_revision = roll['new_revision'] | 447 new_revision = roll['new_revision'] |
| 448 old_change_log = roll_repo.GetChangeLog(old_revision) | 448 old_change_log = roll_repo.GetChangeLog(old_revision) |
| 449 old_rev_author_time = old_change_log.author_time | 449 old_rev_author_time = old_change_log.author_time |
| 450 new_change_log = roll_repo.GetChangeLog(new_revision) | 450 new_change_log = roll_repo.GetChangeLog(new_revision) |
| 451 new_rev_author_time = new_change_log.author_time | 451 new_rev_author_time = new_change_log.author_time |
| 452 | 452 |
| 453 file_change_type = None | 453 file_change_type = None |
| 454 changed_line_numbers = [] | 454 changed_line_numbers = [] |
| 455 | 455 |
| (...skipping 343 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 799 _SaveFailureToMap( | 799 _SaveFailureToMap( |
| 800 cl_failure_map, new_suspected_cl_dict, step_name, None, | 800 cl_failure_map, new_suspected_cl_dict, step_name, None, |
| 801 max(justification_dict['hints'].values())) | 801 max(justification_dict['hints'].values())) |
| 802 | 802 |
| 803 # TODO(stgao): sort CLs by score. | 803 # TODO(stgao): sort CLs by score. |
| 804 analysis_result['failures'].append(step_analysis_result) | 804 analysis_result['failures'].append(step_analysis_result) |
| 805 | 805 |
| 806 suspected_cls = _ConvertCLFailureMapToList(cl_failure_map) | 806 suspected_cls = _ConvertCLFailureMapToList(cl_failure_map) |
| 807 | 807 |
| 808 return analysis_result, suspected_cls | 808 return analysis_result, suspected_cls |
| OLD | NEW |