| Index: chrome/test/chromedriver/run_buildbot_steps.py
|
| diff --git a/chrome/test/chromedriver/run_buildbot_steps.py b/chrome/test/chromedriver/run_buildbot_steps.py
|
| index dd1a3714713285524bc72bb0dba642bdc2ae9846..3ce5bea5a5537c8e0e99af9f7dadbcab8815ac28 100755
|
| --- a/chrome/test/chromedriver/run_buildbot_steps.py
|
| +++ b/chrome/test/chromedriver/run_buildbot_steps.py
|
| @@ -31,10 +31,11 @@ GS_SERVER_LOGS_URL = GS_CHROMEDRIVER_DATA_BUCKET + '/server_logs'
|
| SERVER_LOGS_LINK = (
|
| 'http://chromedriver-data.storage.googleapis.com/server_logs')
|
| TEST_LOG_FORMAT = '%s_log.json'
|
| -GS_GITHASH_TO_SVN_URL = (
|
| +GS_GIT_LOG_URL = (
|
| 'https://chromium.googlesource.com/chromium/src/+/%s?format=json')
|
| GS_SEARCH_PATTERN = (
|
| - r'.*git-svn-id: svn://svn.chromium.org/chrome/trunk/src@(\d+) ')
|
| + r'Cr-Commit-Position: refs/heads/master@{#(\d+)}')
|
| +CR_REV_URL = 'https://cr-rev.appspot.com/_ah/api/crrev/v1/redirect/%s'
|
|
|
| SCRIPT_DIR = os.path.join(_THIS_DIR, os.pardir, os.pardir, os.pardir, os.pardir,
|
| os.pardir, os.pardir, os.pardir, 'scripts')
|
| @@ -384,12 +385,13 @@ def _CleanTmpDir():
|
| os.remove(file_path)
|
|
|
|
|
| -def _GetSVNRevisionFromGitHash(snapshot_hashcode):
|
| - json_url = GS_GITHASH_TO_SVN_URL % snapshot_hashcode
|
| +def _GetCommitPositionFromGitHash(snapshot_hashcode):
|
| + json_url = GS_GIT_LOG_URL % snapshot_hashcode
|
| try:
|
| response = urllib2.urlopen(json_url)
|
| except urllib2.HTTPError as error:
|
| util.PrintAndFlush('HTTP Error %d' % error.getcode())
|
| + return None
|
| except urllib2.URLError as error:
|
| util.PrintAndFlush('URL Error %s' % error.message)
|
| return None
|
| @@ -406,6 +408,23 @@ def _GetSVNRevisionFromGitHash(snapshot_hashcode):
|
| return None
|
|
|
|
|
| +def _GetGitHashFromCommitPosition(commit_position):
|
| + json_url = CR_REV_URL % commit_position
|
| + try:
|
| + response = urllib2.urlopen(json_url)
|
| + except urllib2.HTTPError as error:
|
| + util.PrintAndFlush('HTTP Error %d' % error.getcode())
|
| + return None
|
| + except urllib2.URLError as error:
|
| + util.PrintAndFlush('URL Error %s' % error.message)
|
| + return None
|
| + data = json.loads(response.read())
|
| + if 'git_sha' in data:
|
| + return data['git_sha']
|
| + util.PrintAndFlush('Failed to get git hash for %s' % commit_position)
|
| + return None
|
| +
|
| +
|
| def _WaitForLatestSnapshot(revision):
|
| util.MarkBuildStepStart('wait_for_snapshot')
|
| def _IsRevisionNumber(revision):
|
| @@ -415,10 +434,8 @@ def _WaitForLatestSnapshot(revision):
|
| return revision.isdigit()
|
| while True:
|
| snapshot_revision = archive.GetLatestSnapshotVersion()
|
| - if not _IsRevisionNumber(revision):
|
| - revision = _GetSVNRevisionFromGitHash(revision)
|
| if not _IsRevisionNumber(snapshot_revision):
|
| - snapshot_revision = _GetSVNRevisionFromGitHash(snapshot_revision)
|
| + snapshot_revision = _GetCommitPositionFromGitHash(snapshot_revision)
|
| if revision is not None and snapshot_revision is not None:
|
| if int(snapshot_revision) >= int(revision):
|
| break
|
| @@ -464,7 +481,7 @@ def main():
|
| help=('Comma separated list of application package names, '
|
| 'if running tests on Android.'))
|
| parser.add_option(
|
| - '-r', '--revision', type='int', help='Chromium revision')
|
| + '-r', '--revision', help='Chromium revision')
|
| parser.add_option(
|
| '', '--update-log', action='store_true',
|
| help='Update the test results log (only applicable to Android)')
|
| @@ -479,6 +496,13 @@ def main():
|
|
|
| _CleanTmpDir()
|
|
|
| + if not options.revision:
|
| + commit_position = None
|
| + elif options.revision.isdigit():
|
| + commit_position = options.revision
|
| + else:
|
| + commit_position = _GetCommitPositionFromGitHash(options.revision)
|
| +
|
| if platform == 'android':
|
| if not options.revision and options.update_log:
|
| parser.error('Must supply a --revision with --update-log')
|
| @@ -487,8 +511,8 @@ def main():
|
| if not options.revision:
|
| parser.error('Must supply a --revision')
|
| if platform == 'linux64':
|
| - _ArchivePrebuilts(options.revision)
|
| - _WaitForLatestSnapshot(options.revision)
|
| + _ArchivePrebuilts(commit_position)
|
| + _WaitForLatestSnapshot(commit_position)
|
|
|
| _AddToolsToPath(platform)
|
|
|
| @@ -506,9 +530,9 @@ def main():
|
| if platform == 'android':
|
| if options.update_log:
|
| util.MarkBuildStepStart('update test result log')
|
| - _UpdateTestResultsLog(platform, options.revision, passed)
|
| + _UpdateTestResultsLog(platform, commit_position, passed)
|
| elif passed:
|
| - _ArchiveGoodBuild(platform, options.revision)
|
| + _ArchiveGoodBuild(platform, commit_position)
|
| _MaybeRelease(platform)
|
|
|
| if not passed:
|
|
|