BAPI: Update service API to report LaCrOS version
The LaCrOS version is determined following the same approach used for
Chrome.
BUG=b:235371788
TEST=./unit_tests
Change-Id: I0a961c6f8fc7a6dd0d5cf510380c12f8473513c0
Reviewed-on: https://chromium-review.googlesource.com/c/chromiumos/chromite/+/4205801
Tested-by: Gilberto Contreras <gcontreras@google.com>
Commit-Queue: Gilberto Contreras <gcontreras@google.com>
Reviewed-by: Mike Frysinger <vapier@chromium.org>
Reviewed-by: Alex Klein <saklein@chromium.org>
diff --git a/api/controller/packages.py b/api/controller/packages.py
index cd79b88..feafe40 100644
--- a/api/controller/packages.py
+++ b/api/controller/packages.py
@@ -155,7 +155,9 @@
def GetChromeVersion(input_proto, output_proto, _config):
"""Returns the chrome version."""
build_target = controller_util.ParseBuildTarget(input_proto.build_target)
- chrome_version = packages.determine_chrome_version(build_target)
+ chrome_version = packages.determine_package_version(
+ constants.CHROME_CP, build_target
+ )
if chrome_version:
output_proto.version = chrome_version
@@ -169,6 +171,7 @@
output_proto.platform_version = "12438.0.0"
output_proto.milestone_version = "78"
output_proto.full_version = "R78-12438.0.0"
+ output_proto.lacros_version = "111.0.5550.0"
@faux.success(_GetTargetVersionsResponse)
@@ -191,6 +194,7 @@
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 ""
+ output_proto.lacros_version = target_versions.lacros_version or ""
def _GetBuilderMetadataResponse(input_proto, output_proto, _config):
diff --git a/api/controller/packages_unittest.py b/api/controller/packages_unittest.py
index f0c7b19..30a5f50 100644
--- a/api/controller/packages_unittest.py
+++ b/api/controller/packages_unittest.py
@@ -293,7 +293,7 @@
def testValidateOnly(self):
"""Verify a validate-only call does not execute any logic."""
chrome_version = self.PatchObject(
- packages_service, "determine_chrome_version"
+ packages_service, "determine_package_version"
)
request = self._GetRequest(board="betty")
packages_controller.GetChromeVersion(
@@ -304,7 +304,7 @@
def testMockCall(self):
"""Test a mock call does not execute logic, returns mocked value."""
chrome_version = self.PatchObject(
- packages_service, "determine_chrome_version"
+ packages_service, "determine_package_version"
)
request = self._GetRequest(board="betty")
packages_controller.GetChromeVersion(
@@ -318,7 +318,7 @@
chrome_version = "76.0.1.2"
chrome_version_mock = self.PatchObject(
packages_service,
- "determine_chrome_version",
+ "determine_package_version",
return_value=chrome_version,
)
request = self._GetRequest(board="betty")
@@ -326,14 +326,16 @@
request, self.response, self.api_config
)
self.assertEqual(self.response.version, chrome_version)
- # Verify call to determine_chrome_version passes a build_target object.
+ # Verify call to determine_package_version passes a build_target object.
build_target = build_target_lib.BuildTarget("betty")
- chrome_version_mock.assert_called_with(build_target)
+ chrome_version_mock.assert_called_with(
+ constants.CHROME_CP, build_target
+ )
def testGetChromeVersionHandleNone(self):
"""Verify basic return values."""
self.PatchObject(
- packages_service, "determine_chrome_version", return_value=None
+ packages_service, "determine_package_version", return_value=None
)
request = self._GetRequest(board="betty")
packages_controller.GetChromeVersion(
@@ -404,10 +406,11 @@
# Mock that chrome is built and set the chrome_version.
self.PatchObject(packages_service, "builds", return_value=True)
chrome_version = "76.0.1.2"
- chrome_version_mock = self.PatchObject(
+ lacros_version = "100.0.0.1"
+ package_version_mock = self.PatchObject(
packages_service,
- "determine_chrome_version",
- return_value=chrome_version,
+ "determine_package_version",
+ side_effect=[chrome_version, lacros_version],
)
android_package = "chromeos-base/android-container-pi-10.3"
self.PatchObject(
@@ -450,9 +453,15 @@
self.assertEqual(self.response.platform_version, platform_version)
self.assertEqual(self.response.milestone_version, milestone_version)
self.assertEqual(self.response.full_version, full_version)
+ self.assertEqual(self.response.lacros_version, lacros_version)
# Verify call to determine_chrome_version passes a build_target object.
build_target = build_target_lib.BuildTarget("betty")
- chrome_version_mock.assert_called_with(build_target)
+ package_version_mock.assert_has_calls(
+ calls=[
+ mock.call(constants.CHROME_CP, build_target),
+ mock.call(constants.LACROS_CP, build_target),
+ ]
+ )
# Verify call to determine_android_branch passes a board name.
android_branch_mock.assert_called_with("betty")
@@ -466,10 +475,11 @@
)
# Mock that chrome is built and set the chrome_version.
chrome_version = "76.0.1.2"
+ lacros_version = "100.0.0.1"
self.PatchObject(
packages_service,
- "determine_chrome_version",
- return_value=chrome_version,
+ "determine_package_version",
+ side_effect=[chrome_version, lacros_version],
)
android_package = "chromeos-base/android-container-pi-10.3"
self.PatchObject(
@@ -523,11 +533,17 @@
self.assertEqual(self.response.chrome_version, chrome_version)
self.assertEqual(self.response.platform_version, platform_version)
self.assertEqual(self.response.milestone_version, milestone_version)
+ self.assertEqual(self.response.lacros_version, lacros_version)
# Verify call to packages.builds passes the package list.
- builds_mock.assert_called_with(
- constants.CHROME_CP,
- mock.ANY, # Match the build target object
- packages=cpv_package_list,
+ builds_mock.assert_has_calls(
+ calls=[
+ mock.call(
+ constants.CHROME_CP, mock.ANY, packages=cpv_package_list
+ ),
+ mock.call(
+ constants.LACROS_CP, mock.ANY, packages=cpv_package_list
+ ),
+ ]
)
def testGetTargetVersionNoAndroidNoChrome(self):