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: |