Commit b3d34a4c authored by samuong's avatar samuong Committed by Commit bot

[chromedriver] Update run_buildbot_steps.py to work with git hashes

BUG=

Review URL: https://codereview.chromium.org/474013006

Cr-Commit-Position: refs/heads/master@{#291942}
parent 26339978
...@@ -31,10 +31,11 @@ GS_SERVER_LOGS_URL = GS_CHROMEDRIVER_DATA_BUCKET + '/server_logs' ...@@ -31,10 +31,11 @@ GS_SERVER_LOGS_URL = GS_CHROMEDRIVER_DATA_BUCKET + '/server_logs'
SERVER_LOGS_LINK = ( SERVER_LOGS_LINK = (
'http://chromedriver-data.storage.googleapis.com/server_logs') 'http://chromedriver-data.storage.googleapis.com/server_logs')
TEST_LOG_FORMAT = '%s_log.json' TEST_LOG_FORMAT = '%s_log.json'
GS_GITHASH_TO_SVN_URL = ( GS_GIT_LOG_URL = (
'https://chromium.googlesource.com/chromium/src/+/%s?format=json') 'https://chromium.googlesource.com/chromium/src/+/%s?format=json')
GS_SEARCH_PATTERN = ( 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, SCRIPT_DIR = os.path.join(_THIS_DIR, os.pardir, os.pardir, os.pardir, os.pardir,
os.pardir, os.pardir, os.pardir, 'scripts') os.pardir, os.pardir, os.pardir, 'scripts')
...@@ -384,12 +385,13 @@ def _CleanTmpDir(): ...@@ -384,12 +385,13 @@ def _CleanTmpDir():
os.remove(file_path) os.remove(file_path)
def _GetSVNRevisionFromGitHash(snapshot_hashcode): def _GetCommitPositionFromGitHash(snapshot_hashcode):
json_url = GS_GITHASH_TO_SVN_URL % snapshot_hashcode json_url = GS_GIT_LOG_URL % snapshot_hashcode
try: try:
response = urllib2.urlopen(json_url) response = urllib2.urlopen(json_url)
except urllib2.HTTPError as error: except urllib2.HTTPError as error:
util.PrintAndFlush('HTTP Error %d' % error.getcode()) util.PrintAndFlush('HTTP Error %d' % error.getcode())
return None
except urllib2.URLError as error: except urllib2.URLError as error:
util.PrintAndFlush('URL Error %s' % error.message) util.PrintAndFlush('URL Error %s' % error.message)
return None return None
...@@ -406,6 +408,23 @@ def _GetSVNRevisionFromGitHash(snapshot_hashcode): ...@@ -406,6 +408,23 @@ def _GetSVNRevisionFromGitHash(snapshot_hashcode):
return None 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): def _WaitForLatestSnapshot(revision):
util.MarkBuildStepStart('wait_for_snapshot') util.MarkBuildStepStart('wait_for_snapshot')
def _IsRevisionNumber(revision): def _IsRevisionNumber(revision):
...@@ -415,10 +434,8 @@ def _WaitForLatestSnapshot(revision): ...@@ -415,10 +434,8 @@ def _WaitForLatestSnapshot(revision):
return revision.isdigit() return revision.isdigit()
while True: while True:
snapshot_revision = archive.GetLatestSnapshotVersion() snapshot_revision = archive.GetLatestSnapshotVersion()
if not _IsRevisionNumber(revision):
revision = _GetSVNRevisionFromGitHash(revision)
if not _IsRevisionNumber(snapshot_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 revision is not None and snapshot_revision is not None:
if int(snapshot_revision) >= int(revision): if int(snapshot_revision) >= int(revision):
break break
...@@ -464,7 +481,7 @@ def main(): ...@@ -464,7 +481,7 @@ def main():
help=('Comma separated list of application package names, ' help=('Comma separated list of application package names, '
'if running tests on Android.')) 'if running tests on Android.'))
parser.add_option( parser.add_option(
'-r', '--revision', type='int', help='Chromium revision') '-r', '--revision', help='Chromium revision')
parser.add_option( parser.add_option(
'', '--update-log', action='store_true', '', '--update-log', action='store_true',
help='Update the test results log (only applicable to Android)') help='Update the test results log (only applicable to Android)')
...@@ -479,6 +496,13 @@ def main(): ...@@ -479,6 +496,13 @@ def main():
_CleanTmpDir() _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 platform == 'android':
if not options.revision and options.update_log: if not options.revision and options.update_log:
parser.error('Must supply a --revision with --update-log') parser.error('Must supply a --revision with --update-log')
...@@ -487,8 +511,8 @@ def main(): ...@@ -487,8 +511,8 @@ def main():
if not options.revision: if not options.revision:
parser.error('Must supply a --revision') parser.error('Must supply a --revision')
if platform == 'linux64': if platform == 'linux64':
_ArchivePrebuilts(options.revision) _ArchivePrebuilts(commit_position)
_WaitForLatestSnapshot(options.revision) _WaitForLatestSnapshot(commit_position)
_AddToolsToPath(platform) _AddToolsToPath(platform)
...@@ -506,9 +530,9 @@ def main(): ...@@ -506,9 +530,9 @@ def main():
if platform == 'android': if platform == 'android':
if options.update_log: if options.update_log:
util.MarkBuildStepStart('update test result log') util.MarkBuildStepStart('update test result log')
_UpdateTestResultsLog(platform, options.revision, passed) _UpdateTestResultsLog(platform, commit_position, passed)
elif passed: elif passed:
_ArchiveGoodBuild(platform, options.revision) _ArchiveGoodBuild(platform, commit_position)
_MaybeRelease(platform) _MaybeRelease(platform)
if not passed: if not passed:
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment