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

Unified Diff: tools/findit/chromium_deps.py

Issue 538383002: [Findit] Make Findit more robust. (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Workaround python bug. Created 6 years, 3 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 side-by-side diff with in-line comments
Download patch
Index: tools/findit/chromium_deps.py
diff --git a/tools/findit/chromium_deps.py b/tools/findit/chromium_deps.py
index e512688bc60b16aca0f78f4c64f435c8b5af0169..cf8aa26b48132f5abbd49dcf3a731692b85fe915 100644
--- a/tools/findit/chromium_deps.py
+++ b/tools/findit/chromium_deps.py
@@ -68,31 +68,25 @@ def _GetComponentName(path, host_dirs):
return '_'.join(path.split('/'))
-def _GetContentOfDEPS(revision, retries=5, sleep_time=0.1):
+def _GetContentOfDEPS(revision):
chromium_git_file_url_template = CONFIG['chromium_git_file_url']
- deps_file_name = '.DEPS.git'
- count = 0
- while True:
- count += 1
+ # Try .DEPS.git first, because before migration from SVN to GIT, the .DEPS.git
+ # has the dependency in GIT repo while DEPS has dependency in SVN repo.
+ url = chromium_git_file_url_template % (revision, '.DEPS.git')
+ http_status_code, content = utils.GetHttpClient().Get(
+ url, retries=5, retry_if_not=404)
- url = chromium_git_file_url_template % (revision, deps_file_name)
- http_status_code, content = utils.GetHttpClient().Get(url, timeout=60)
+ # If .DEPS.git is not found, use DEPS, assuming it is a commit after migration
+ # from SVN to GIT.
+ if http_status_code == 404:
+ url = chromium_git_file_url_template % (revision, 'DEPS')
+ http_status_code, content = utils.GetHttpClient().Get(url, retries=5)
- if http_status_code == 404 and deps_file_name != 'DEPS':
- deps_file_name = 'DEPS'
- count = 0
- continue
- elif http_status_code == 200:
- # Googlesource git returns text file encoded in base64, so decode it.
- return base64.b64decode(content)
-
- if count < retries:
- time.sleep(sleep_time)
- else:
- break
-
- return ''
+ if http_status_code == 200:
+ return base64.b64decode(content)
+ else:
+ return ''
def GetChromiumComponents(chromium_revision,
@@ -111,6 +105,7 @@ def GetChromiumComponents(chromium_revision,
Returns:
A map from component path to parsed component name, repository URL,
repository type and revision.
+ Return None if an error occurs.
"""
if os_platform.lower() == 'linux':
os_platform = 'unix'
@@ -121,15 +116,30 @@ def GetChromiumComponents(chromium_revision,
# Convert svn revision or commit position to Git hash.
cr_rev_url_template = CONFIG['cr_rev_url']
url = cr_rev_url_template % chromium_revision
- # TODO(stgao): Add retry in HttpClient.
- _, content = utils.GetHttpClient().Get(url, timeout=60)
+ status_code, content = utils.GetHttpClient().Get(
+ url, timeout=60, retries=5, retry_if_not=404)
+ if status_code != 200 or not content:
+ if status_code == 404:
+ print 'Chromium commit position %s is not found.' % chromium_revision
+ return None
+
cr_rev_data = json.loads(content)
if 'git_sha' not in cr_rev_data:
- raise Exception('Failed to convert svn revision to git hash')
- chromium_revision = cr_rev_data['git_sha']
+ return None
+
+ if 'repo' not in cr_rev_data or cr_rev_data['repo'] != 'chromium/src':
+ print ('%s seems like a commit position of "%s", but not "chromium/src".'
+ % (chromium_revision, cr_rev_data['repo']))
+ return None
+
+ chromium_revision = cr_rev_data.get('git_sha')
+ if not chromium_revision:
+ return None
# Download the content of DEPS file in chromium.
deps_content = deps_file_downloader(chromium_revision)
+ if not deps_content:
+ return None
all_deps = {}
@@ -196,12 +206,17 @@ def GetChromiumComponentRange(old_revision,
Returns:
A map from component path to its parsed regression and other information.
+ Return None if an error occurs.
"""
- # Assume first revision is the old revision.
old_components = GetChromiumComponents(old_revision, os_platform,
deps_file_downloader)
+ if not old_components:
+ return None
+
new_components = GetChromiumComponents(new_revision, os_platform,
deps_file_downloader)
+ if not new_components:
+ return None
components = {}
for path in new_components:

Powered by Google App Engine
This is Rietveld 408576698