aboutsummaryrefslogtreecommitdiff
path: root/cros_utils
diff options
context:
space:
mode:
authorDenis Nikitin <denik@google.com>2019-08-14 10:28:29 -0700
committerDenis Nikitin <denik@chromium.org>2019-08-14 23:29:27 +0000
commit8063d4edff8eeaeb40f6d1a9a808a607629ceade (patch)
treee1470ba121d8938b59bf07d8eb40246f5b2217dc /cros_utils
parentd5ce3d74eb5c9b66291a9a22014d7468df9879e3 (diff)
downloadtoolchain-utils-8063d4edff8eeaeb40f6d1a9a808a607629ceade.tar.gz
cros_utils: Fix blacklisted R79-12384.0.0 image
Replaced comparison of the image revision with list comparison. Added unittest for GetLatestImage. BUG=chromium:992242 TEST=unittest passes Change-Id: I085a2a31ff89f02f71c093e7ac3726250b909229 Reviewed-on: https://chromium-review.googlesource.com/c/chromiumos/third_party/toolchain-utils/+/1754442 Commit-Queue: Denis Nikitin <denik@chromium.org> Legacy-Commit-Queue: Commit Bot <commit-bot@chromium.org> Reviewed-by: Manoj Gupta <manojgupta@chromium.org> Tested-by: Denis Nikitin <denik@chromium.org>
Diffstat (limited to 'cros_utils')
-rw-r--r--cros_utils/buildbot_utils.py3
-rwxr-xr-xcros_utils/buildbot_utils_unittest.py34
2 files changed, 35 insertions, 2 deletions
diff --git a/cros_utils/buildbot_utils.py b/cros_utils/buildbot_utils.py
index 1101cbdf..35dc3ac6 100644
--- a/cros_utils/buildbot_utils.py
+++ b/cros_utils/buildbot_utils.py
@@ -2,6 +2,7 @@
# Copyright 2017 The Chromium OS Authors. All rights reserved.
# Use of this source code is governed by a BSD-style license that can be
# found in the LICENSE file.
+
"""Utilities for launching and accessing ChromeOS buildbots."""
from __future__ import print_function
@@ -252,7 +253,7 @@ def GetLatestImage(chromeos_root, path):
build = '%s/R%d-%d.%d.%d' % (path, c[0], c[1], c[2], c[3])
# Blacklist "R79-12384.0.0" image released by mistake.
# TODO(crbug.com/992242): Remove the filter by 2019-09-05.
- if '.'.join(c) == '79.12384.0.0':
+ if c == [79, 12384, 0, 0]:
continue
if DoesImageExist(chromeos_root, build):
diff --git a/cros_utils/buildbot_utils_unittest.py b/cros_utils/buildbot_utils_unittest.py
index c57b2d32..bfba8d78 100755
--- a/cros_utils/buildbot_utils_unittest.py
+++ b/cros_utils/buildbot_utils_unittest.py
@@ -1,8 +1,10 @@
#!/usr/bin/env python2
-
+# -*- coding: utf-8 -*-
+#
# Copyright 2018 The Chromium OS Authors. All rights reserved.
# Use of this source code is governed by a BSD-style license that can be
# found in the LICENSE file.
+
"""Unittest for buildbot_utils.py."""
from __future__ import print_function
@@ -34,9 +36,19 @@ class TrybotTest(unittest.TestCase):
tryjob_out = (
'[{"buildbucket_id": "8952721143823688176", "build_config": '
'"cave-llvm-toolchain-tryjob", "url": '
+ # pylint: disable=line-too-long
'"http://cros-goldeneye/chromeos/healthmonitoring/buildDetails?buildbucketId=8952721143823688176"}]'
)
+ GSUTILS_LS = '\n'.join([
+ 'gs://chromeos-image-archive/{0}/R78-12421.0.0/',
+ 'gs://chromeos-image-archive/{0}/R78-12422.0.0/',
+ 'gs://chromeos-image-archive/{0}/R78-12423.0.0/',
+ # "R79-12384.0.0" image should be blacklisted.
+ # TODO(crbug.com/992242): Remove the filter by 2019-09-05.
+ 'gs://chromeos-image-archive/{0}/R79-12384.0.0/',
+ ])
+
buildresult_out = (
'{"8952721143823688176": {"status": "pass", "artifacts_url":'
'"gs://chromeos-image-archive/trybot-elm-release-tryjob/R67-10468.0.0-'
@@ -112,6 +124,26 @@ class TrybotTest(unittest.TestCase):
buildbucket_id = buildbot_utils.ParseTryjobBuildbucketId(self.tryjob_out)
self.assertEqual(buildbucket_id, self.buildbucket_id)
+ def testGetLatestImageValid(self):
+ with patch.object(command_executer.CommandExecuter,
+ 'ChrootRunCommandWOutput') as mocked_run:
+ with patch.object(buildbot_utils, 'DoesImageExist') as mocked_imageexist:
+ IMAGE_DIR = 'lulu-release'
+ mocked_run.return_value = (0, self.GSUTILS_LS.format(IMAGE_DIR), '')
+ mocked_imageexist.return_value = True
+ image = buildbot_utils.GetLatestImage('', IMAGE_DIR)
+ self.assertEqual(image, '{0}/R78-12423.0.0'.format(IMAGE_DIR))
+
+ def testGetLatestImageInvalid(self):
+ with patch.object(command_executer.CommandExecuter,
+ 'ChrootRunCommandWOutput') as mocked_run:
+ with patch.object(buildbot_utils, 'DoesImageExist') as mocked_imageexist:
+ IMAGE_DIR = 'kefka-release'
+ mocked_run.return_value = (0, self.GSUTILS_LS.format(IMAGE_DIR), '')
+ mocked_imageexist.return_value = False
+ image = buildbot_utils.GetLatestImage('', IMAGE_DIR)
+ self.assertIsNone(image)
+
if __name__ == '__main__':
unittest.main()