controller/packages: Simplify GetTargetVersions.
Simplify the controller function to only do input/output
translation, using the new service method instead.
BUG=b:194405049
TEST=run_tests
Change-Id: I83fffe7ac79534df2d474b083681e1783ee55fe8
Reviewed-on: https://chromium-review.googlesource.com/c/chromiumos/chromite/+/3273762
Tested-by: Alex Klein <saklein@chromium.org>
Commit-Queue: Alex Klein <saklein@chromium.org>
Reviewed-by: Sergey Frolov <sfrolov@google.com>
diff --git a/api/controller/packages.py b/api/controller/packages.py
index 11062a7..3b0df05 100644
--- a/api/controller/packages.py
+++ b/api/controller/packages.py
@@ -169,51 +169,18 @@
def GetTargetVersions(input_proto, output_proto, _config):
"""Returns the target versions."""
build_target = controller_util.ParseBuildTarget(input_proto.build_target)
- # Look up the android package here once since the operation is so slow.
- android_package = packages.determine_android_package(build_target.name)
- if android_package:
- # Android version.
- android_version = packages.determine_android_version(
- build_target.name, package=android_package)
- logging.info('Found android version: %s', android_version)
- if android_version:
- output_proto.android_version = android_version
- # Android branch version.
- android_branch_version = packages.determine_android_branch(
- build_target.name, package=android_package)
- logging.info('Found android branch version: %s', android_branch_version)
- if android_branch_version:
- output_proto.android_branch_version = android_branch_version
- # Android target version.
- android_target_version = packages.determine_android_target(
- build_target.name, package=android_package)
- logging.info('Found android target version: %s', android_target_version)
- if android_target_version:
- output_proto.android_target_version = android_target_version
+ package_list = [
+ controller_util.PackageInfoToCPV(x) for x in input_proto.packages or []
+ ]
+ target_versions = packages.get_target_versions(build_target, package_list)
- # TODO(crbug/1019770): Investigate cases where builds_chrome is true but
- # chrome_version is None.
-
- # If input_proto.packages is empty, then the default set of packages will
- # be used as defined in dependency.GetBuildDependency.
- package_list = None
- if input_proto.packages:
- package_list = [
- controller_util.PackageInfoToCPV(x) for x in input_proto.packages
- ]
- builds_chrome = packages.builds(constants.CHROME_CP, build_target,
- packages=package_list)
- if builds_chrome:
- # Chrome version fetch.
- chrome_version = packages.determine_chrome_version(build_target)
- logging.info('Found chrome version: %s', chrome_version)
- if chrome_version:
- output_proto.chrome_version = chrome_version
-
- # The ChromeOS version info.
- output_proto.platform_version = packages.determine_platform_version()
- output_proto.milestone_version = packages.determine_milestone_version()
- output_proto.full_version = packages.determine_full_version()
+ output_proto.android_version = target_versions.android_version or ''
+ output_proto.android_branch_version = target_versions.android_branch or ''
+ output_proto.android_target_version = target_versions.android_target or ''
+ output_proto.chrome_version = target_versions.chrome_version or ''
+ output_proto.platform_version = target_versions.platform_version or ''
+ output_proto.milestone_version = target_versions.milestone_version or ''
+ output_proto.full_version = target_versions.full_version or ''
def _GetBuilderMetadataResponse(input_proto, output_proto, _config):
diff --git a/api/controller/packages_unittest.py b/api/controller/packages_unittest.py
index 7834b24..42c8434 100644
--- a/api/controller/packages_unittest.py
+++ b/api/controller/packages_unittest.py
@@ -324,67 +324,23 @@
return request
def testValidateOnly(self):
- """Sanity check that a validate only call does not execute any logic."""
- builds_chrome = self.PatchObject(
- packages_service, 'builds', return_value=True)
- patch_version = self.PatchObject(packages_service,
- 'determine_android_version')
- patch_branch_version = self.PatchObject(packages_service,
- 'determine_android_branch')
- patch_target_version = self.PatchObject(packages_service,
- 'determine_android_target')
- chrome_version = self.PatchObject(packages_service,
- 'determine_chrome_version')
- platform_version = self.PatchObject(packages_service,
- 'determine_platform_version')
- milestone_version = self.PatchObject(packages_service,
- 'determine_milestone_version')
- full_version = self.PatchObject(packages_service,
- 'determine_full_version')
+ """Quick check that a validate only call does not execute any logic."""
+ patch_version = self.PatchObject(packages_service, 'get_target_versions')
request = self._GetRequest(board='betty')
packages_controller.GetTargetVersions(request, self.response,
self.validate_only_config)
patch_version.assert_not_called()
- patch_branch_version.assert_not_called()
- patch_target_version.assert_not_called()
- builds_chrome.assert_not_called()
- chrome_version.assert_not_called()
- platform_version.assert_not_called()
- milestone_version.assert_not_called()
- full_version.assert_not_called()
def testMockCall(self):
"""Test that a mock call does not execute logic, returns mocked value."""
- builds_chrome = self.PatchObject(
- packages_service, 'builds', return_value=True)
- patch_version = self.PatchObject(packages_service,
- 'determine_android_version')
- patch_branch_version = self.PatchObject(packages_service,
- 'determine_android_branch')
- patch_target_version = self.PatchObject(packages_service,
- 'determine_android_target')
- chrome_version = self.PatchObject(packages_service,
- 'determine_chrome_version')
- platform_version = self.PatchObject(packages_service,
- 'determine_platform_version')
- milestone_version = self.PatchObject(packages_service,
- 'determine_milestone_version')
- full_version = self.PatchObject(packages_service,
- 'determine_full_version')
+ patch_version = self.PatchObject(packages_service, 'get_target_versions')
request = self._GetRequest(board='betty')
packages_controller.GetTargetVersions(request, self.response,
self.mock_call_config)
patch_version.assert_not_called()
- patch_branch_version.assert_not_called()
- patch_target_version.assert_not_called()
- builds_chrome.assert_not_called()
- chrome_version.assert_not_called()
- platform_version.assert_not_called()
- milestone_version.assert_not_called()
- full_version.assert_not_called()
self.assertTrue(self.response.android_version)
self.assertTrue(self.response.android_branch_version)
@@ -414,9 +370,10 @@
self.PatchObject(packages_service, 'determine_android_package',
return_value=android_package)
android_branch = 'android_test_branch'
- android_branch_mock = self.PatchObject(packages_service,
- 'determine_android_branch',
- return_value=android_branch)
+ android_branch_mock = self.PatchObject(
+ packages_service,
+ 'determine_android_branch',
+ return_value=android_branch)
platform_version = '12345.1.2'
self.PatchObject(packages_service, 'determine_platform_version',
return_value=platform_version)
@@ -440,7 +397,7 @@
build_target = build_target_lib.BuildTarget('betty')
chrome_version_mock.assert_called_with(build_target)
# Verify call to determine_android_branch passes a board name.
- android_branch_mock.assert_called_with('betty', package=android_package)
+ android_branch_mock.assert_called_with('betty')
def testGetTargetVersionsWithPackagesSet(self):
"""Verify packages pass through and basic return values."""