Commit 667acf6d authored by Stephen Martinis's avatar Stephen Martinis Committed by Commit Bot

git_cl.py: Use build_address instead of URL parsing

The URL structure of the build info returned by `git cl try-results` is
different on LUCI than it was on buildbot. This CL changes git_cl.py to
instead look at the build_address of the build to determine the build
number.

Bug: 891729
Change-Id: I448638178942f2adbbb23c5dd947e305821a5417
Reviewed-on: https://chromium-review.googlesource.com/c/1302097
Commit-Queue: Stephen Martinis <martiniss@chromium.org>
Reviewed-by: default avatarRobert Ma <robertma@chromium.org>
Cr-Commit-Position: refs/heads/master@{#603263}
parent be448bda
...@@ -248,10 +248,14 @@ class GitCL(object): ...@@ -248,10 +248,14 @@ class GitCL(object):
url = result_dict['url'] url = result_dict['url']
if url is None: if url is None:
return Build(builder_name, None) return Build(builder_name, None)
match = re.match(r'.*/(\d+)/?$', url) # TODO(martiniss): Switch to using build number once `git cl
if match: # try-results` uses buildbucket v2 API.
build_number = match.group(1) tags = result_dict.get('tags', [])
return Build(builder_name, int(build_number)) for tag in tags:
if tag.startswith("build_address:"):
build_number = tag.split('/')[-1]
return Build(builder_name, int(build_number))
match = re.match(r'.*/task/([0-9a-f]+)(/?|\?.*)$', url) match = re.match(r'.*/task/([0-9a-f]+)(/?|\?.*)$', url)
assert match, '%s did not match expected format' % url assert match, '%s did not match expected format' % url
task_id = match.group(1) task_id = match.group(1)
......
...@@ -201,7 +201,10 @@ class GitCLTest(unittest.TestCase): ...@@ -201,7 +201,10 @@ class GitCLTest(unittest.TestCase):
'builder_name': 'some-builder', 'builder_name': 'some-builder',
'status': 'COMPLETED', 'status': 'COMPLETED',
'result': 'FAILURE', 'result': 'FAILURE',
'url': 'http://ci.chromium.org/master/some-builder/100', 'tags': [
'build_address:luci.chromium.try/chromium_presubmit/100',
],
'url': 'http://ci.chromium.org/b/8931586523737389552',
}, },
] ]
self.assertEqual( self.assertEqual(
...@@ -348,12 +351,18 @@ class GitCLTest(unittest.TestCase): ...@@ -348,12 +351,18 @@ class GitCLTest(unittest.TestCase):
'builder_name': 'builder-b', 'builder_name': 'builder-b',
'status': 'COMPLETED', 'status': 'COMPLETED',
'result': 'SUCCESS', 'result': 'SUCCESS',
'url': 'http://build.chromium.org/p/master/builders/builder-b/builds/100', 'tags': [
'build_address:luci.chromium.try/chromium_presubmit/100',
],
'url': 'http://build.chromium.org/b/123123123132123123',
}, },
{ {
'builder_name': 'builder-b', 'builder_name': 'builder-b',
'status': 'COMPLETED', 'status': 'COMPLETED',
'result': 'SUCCESS', 'result': 'SUCCESS',
'tags': [
'build_address:luci.chromium.try/chromium_presubmit/90',
],
'url': 'http://build.chromium.org/p/master/builders/builder-b/builds/90', 'url': 'http://build.chromium.org/p/master/builders/builder-b/builds/90',
}, },
{ {
...@@ -366,7 +375,10 @@ class GitCLTest(unittest.TestCase): ...@@ -366,7 +375,10 @@ class GitCLTest(unittest.TestCase):
'builder_name': 'builder-c', 'builder_name': 'builder-c',
'status': 'COMPLETED', 'status': 'COMPLETED',
'result': 'SUCCESS', 'result': 'SUCCESS',
'url': 'http://ci.chromium.org/master/builder-c/123', 'tags': [
'build_address:luci.chromium.try/chromium_presubmit/123',
],
'url': 'http://ci.chromium.org/b/123123123123123123',
}, },
] ]
self.assertEqual( self.assertEqual(
...@@ -383,21 +395,10 @@ class GitCLTest(unittest.TestCase): ...@@ -383,21 +395,10 @@ class GitCLTest(unittest.TestCase):
'builder_name': 'builder-a', 'builder_name': 'builder-a',
'status': 'STARTED', 'status': 'STARTED',
'result': None, 'result': None,
'url': 'http://ci.chromium.org/p/master/some-builder/100', 'tags': [
}, 'build_address:luci.chromium.try/chromium_presubmit/100',
] ],
self.assertEqual( 'url': 'http://ci.chromium.org/b/123123123123123',
git_cl.latest_try_jobs(['builder-a']),
{Build('builder-a', 100): TryJobStatus('STARTED')})
def test_latest_try_jobs_started_build_buildbot_url(self):
git_cl = GitCL(MockHost())
git_cl.fetch_raw_try_job_results = lambda **_: [
{
'builder_name': 'builder-a',
'status': 'STARTED',
'result': None,
'url': 'http://build.chromium.org/master/builders/some-builder/builds/100',
}, },
] ]
self.assertEqual( self.assertEqual(
...@@ -412,14 +413,20 @@ class GitCLTest(unittest.TestCase): ...@@ -412,14 +413,20 @@ class GitCLTest(unittest.TestCase):
'status': 'COMPLETED', 'status': 'COMPLETED',
'result': 'FAILURE', 'result': 'FAILURE',
'failure_reason': 'BUILD_FAILURE', 'failure_reason': 'BUILD_FAILURE',
'url': 'http://ci.chromium.org/p/master/builder-a/100', 'tags': [
'build_address:luci.chromium.try/chromium_presubmit/100',
],
'url': 'http://ci.chromium.org/b/123123123123123123',
}, },
{ {
'builder_name': 'builder-b', 'builder_name': 'builder-b',
'status': 'COMPLETED', 'status': 'COMPLETED',
'result': 'FAILURE', 'result': 'FAILURE',
'failure_reason': 'INFRA_FAILURE', 'failure_reason': 'INFRA_FAILURE',
'url': 'http://ci.chromium.org/p/master/builder-b/200', 'tags': [
'build_address:luci.chromium.try/chromium_presubmit/200',
],
'url': 'http://ci.chromium.org/b/1293871928371923719',
}, },
] ]
self.assertEqual( self.assertEqual(
...@@ -436,7 +443,10 @@ class GitCLTest(unittest.TestCase): ...@@ -436,7 +443,10 @@ class GitCLTest(unittest.TestCase):
'builder_name': 'builder-b', 'builder_name': 'builder-b',
'status': 'COMPLETED', 'status': 'COMPLETED',
'result': 'SUCCESS', 'result': 'SUCCESS',
'url': 'https://ci.chromium.org/buildbot/mymaster/builder-b/10', 'tags': [
'build_address:luci.chromium.try/chromium_presubmit/10',
],
'url': 'https://ci.chromium.org/b/123918239182739',
}, },
{ {
'builder_name': 'builder-b', 'builder_name': 'builder-b',
......
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