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 c471dbcf28d486ece975dc4750cf9a53b149aadf..13dc8cacfd77ca447fcffab6a640a46917b7201e 100755 |
--- a/chrome/test/chromedriver/run_buildbot_steps.py |
+++ b/chrome/test/chromedriver/run_buildbot_steps.py |
@@ -31,6 +31,10 @@ 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 =\ |
+ 'https://chromium.googlesource.com/chromium/src/+/%s?format=json' |
+GS_SEARCH_PATTERN =\ |
+ r'.*git-svn-id: svn://svn.chromium.org/chrome/trunk/src@(\d+) ' |
SCRIPT_DIR = os.path.join(_THIS_DIR, os.pardir, os.pardir, os.pardir, os.pardir, |
os.pardir, os.pardir, os.pardir, 'scripts') |
@@ -379,15 +383,36 @@ def _CleanTmpDir(): |
print 'deleting file', file_path |
os.remove(file_path) |
+def _GetSVNRevisionFromGitHash(snapshot_revision): |
+ json_url = GS_GITHASH_TO_SVN_URL % snapshot_revision |
+ try: |
+ response = urllib2.urlopen(json_url) |
+ except urllib2.HTTPError, error: |
+ util.PrintAndFlush('HTTP Error %d' % error.getcode()) |
+ return None |
+ data = json.loads(response.read()[4:]) |
+ if 'message' in data: |
+ message = data['message'].split('\n') |
+ message = [line for line in message if line.strip()] |
+ search_pattern = re.compile(GS_SEARCH_PATTERN) |
+ result = search_pattern.search(message[len(message)-1]) |
+ if result: |
+ return result.group(1) |
+ return None |
def _WaitForLatestSnapshot(revision): |
util.MarkBuildStepStart('wait_for_snapshot') |
while True: |
snapshot_revision = archive.GetLatestSnapshotVersion() |
- if int(snapshot_revision) >= int(revision): |
- break |
- util.PrintAndFlush('Waiting for snapshot >= %s, found %s' % |
- (revision, snapshot_revision)) |
+ if not revision.isdigit(): |
+ revision = _GetSVNRevisionFromGitHash(revision) |
+ if not snapshot_revision.isdigit(): |
+ snapshot_revision = _GetSVNRevisionFromGitHash(snapshot_revision) |
+ if revision is not None and snapshot_revision is not None: |
+ if int(snapshot_revision) >= int(revision): |
+ break |
+ util.PrintAndFlush('Waiting for snapshot >= %s, found %s' % |
+ (revision, snapshot_revision)) |
time.sleep(60) |
util.PrintAndFlush('Got snapshot revision %s' % snapshot_revision) |