Commit 4aa01c57 authored by Steve Kobes's avatar Steve Kobes Committed by Commit Bot

Ignore Swarming tasks in GitCL.latest_try_jobs.

Swarming task IDs aren't comparable to BuildBot build numbers.  We'll need
something smarter in a post-BuildBot world, but this gets things working for
now.

Bug: 755401, 771438
Change-Id: Ifa13bc95c3a7527d7272fa3f35cbd385328aa945
Reviewed-on: https://chromium-review.googlesource.com/701916
Commit-Queue: Steve Kobes <skobes@chromium.org>
Reviewed-by: default avatarQuinten Yearsley <qyearsley@chromium.org>
Cr-Commit-Position: refs/heads/master@{#506632}
parent d0a42b19
...@@ -144,7 +144,9 @@ class GitCL(object): ...@@ -144,7 +144,9 @@ class GitCL(object):
A dict mapping Build objects to TryJobStatus objects, with A dict mapping Build objects to TryJobStatus objects, with
only the latest jobs included. only the latest jobs included.
""" """
return self.filter_latest(self.try_job_results(builder_names)) # TODO(crbug.com/771438): Update filter_latest to handle Swarming tasks.
return self.filter_latest(
self.try_job_results(builder_names, include_swarming_tasks=False))
@staticmethod @staticmethod
def filter_latest(try_results): def filter_latest(try_results):
...@@ -154,13 +156,16 @@ class GitCL(object): ...@@ -154,13 +156,16 @@ class GitCL(object):
latest_builds = filter_latest_builds(try_results.keys()) latest_builds = filter_latest_builds(try_results.keys())
return {b: s for b, s in try_results.items() if b in latest_builds} return {b: s for b, s in try_results.items() if b in latest_builds}
def try_job_results(self, builder_names=None): def try_job_results(self, builder_names=None, include_swarming_tasks=True):
"""Returns a dict mapping Build objects to TryJobStatus objects.""" """Returns a dict mapping Build objects to TryJobStatus objects."""
raw_results = self.fetch_raw_try_job_results() raw_results = self.fetch_raw_try_job_results()
build_to_status = {} build_to_status = {}
for result in raw_results: for result in raw_results:
if builder_names and result['builder_name'] not in builder_names: if builder_names and result['builder_name'] not in builder_names:
continue continue
is_swarming_task = result['url'] and '/task/' in result['url']
if is_swarming_task and not include_swarming_tasks:
continue
build_to_status[self._build(result)] = self._try_job_status(result) build_to_status[self._build(result)] = self._try_job_status(result)
return build_to_status return build_to_status
......
...@@ -239,6 +239,28 @@ class GitCLTest(unittest.TestCase): ...@@ -239,6 +239,28 @@ class GitCLTest(unittest.TestCase):
Build('builder-b', 200): TryJobStatus('COMPLETED', 'FAILURE'), Build('builder-b', 200): TryJobStatus('COMPLETED', 'FAILURE'),
}) })
def test_latest_try_builds_ignores_swarming(self):
git_cl = GitCL(MockHost())
git_cl.fetch_raw_try_job_results = lambda: [
{
'builder_name': 'builder-b',
'status': 'COMPLETED',
'result': 'SUCCESS',
'url': 'http://build.chromium.org/p/master/builders/builder-b/builds/100',
},
{
'builder_name': 'builder-b',
'status': 'COMPLETED',
'result': 'SUCCESS',
'url': 'https://ci.chromium.org/swarming/task/1234abcd1234abcd?server=chromium-swarm.appspot.com',
}
]
self.assertEqual(
git_cl.latest_try_jobs(['builder-b']),
{
Build('builder-b', 100): TryJobStatus('COMPLETED', 'SUCCESS'),
})
def test_filter_latest(self): def test_filter_latest(self):
try_job_results = { try_job_results = {
Build('builder-a', 100): TryJobStatus('COMPLETED', 'FAILURE'), Build('builder-a', 100): TryJobStatus('COMPLETED', 'FAILURE'),
......
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