toolchain: Implement Chrome VerifyReleaseAfdoFile endpoints
This adds the Chrome AFDO release verifier support.
Support PrepareForBuild(..., additional_args=)
Unimplemented toolchain (Prepare/Bundle) endpoints now raise errors.
BUG=chromium:1019868
TEST=unit tests pass.
Change-Id: Ifa8f3e9cece1dce88293c8f213dbfac3398ae05e
Reviewed-on: https://chromium-review.googlesource.com/c/chromiumos/chromite/+/2054757
Tested-by: LaMont Jones <lamontjones@chromium.org>
Commit-Queue: LaMont Jones <lamontjones@chromium.org>
Reviewed-by: Tiancong Wang <tcwang@google.com>
Reviewed-by: Alex Klein <saklein@chromium.org>
diff --git a/api/controller/toolchain_unittest.py b/api/controller/toolchain_unittest.py
index a139c25..60f091d 100644
--- a/api/controller/toolchain_unittest.py
+++ b/api/controller/toolchain_unittest.py
@@ -197,16 +197,14 @@
self.prep, self.bundle),
})
- def _GetRequest(self, artifact_types=None):
- if artifact_types is None:
- artifact_types = []
+ def _GetRequest(
+ self, artifact_types=None, input_artifacts=None, additional_args=None):
chroot = common_pb2.Chroot(path=self.tempdir)
sysroot = sysroot_pb2.Sysroot(
path='/build/board', build_target=common_pb2.BuildTarget(name='board'))
return toolchain_pb2.PrepareForToolchainBuildRequest(
- artifact_types=artifact_types,
- chroot=chroot, sysroot=sysroot,
- )
+ artifact_types=artifact_types, chroot=chroot, sysroot=sysroot,
+ input_artifacts=input_artifacts, additional_args=additional_args)
def testRaisesForUnknown(self):
request = self._GetRequest([BuilderConfig.Artifacts.IMAGE_ARCHIVES])
@@ -220,7 +218,7 @@
chroot=None, sysroot=None)
toolchain.PrepareForBuild(request, self.response, self.api_config)
self.prep.assert_called_once_with(
- 'UnverifiedOrderingFile', None, '', '', {})
+ 'UnverifiedOrderingFile', None, '', '', {}, {})
def testHandlesUnknownInputArtifacts(self):
request = toolchain_pb2.PrepareForToolchainBuildRequest(
@@ -232,7 +230,30 @@
])
toolchain.PrepareForBuild(request, self.response, self.api_config)
self.prep.assert_called_once_with(
- 'UnverifiedOrderingFile', None, '', '', {})
+ 'UnverifiedOrderingFile', None, '', '', {}, {})
+
+ def testPassesAdditionalArgs(self):
+ request = toolchain_pb2.PrepareForToolchainBuildRequest(
+ artifact_types=[BuilderConfig.Artifacts.UNVERIFIED_ORDERING_FILE],
+ chroot=None, sysroot=None, input_artifacts=[
+ BuilderConfig.Artifacts.InputArtifactInfo(
+ input_artifact_type=\
+ BuilderConfig.Artifacts.UNVERIFIED_ORDERING_FILE,
+ input_artifact_gs_locations=['path1', 'path2']),
+ BuilderConfig.Artifacts.InputArtifactInfo(
+ input_artifact_type=\
+ BuilderConfig.Artifacts.UNVERIFIED_ORDERING_FILE,
+ input_artifact_gs_locations=['path3']),
+ ],
+ additional_args=common_pb2.PrepareForBuildAdditionalArgs(
+ chrome_cwp_profile='CWPVERSION'),
+ )
+ toolchain.PrepareForBuild(request, self.response, self.api_config)
+ self.prep.assert_called_once_with(
+ 'UnverifiedOrderingFile', None, '', '', {
+ 'UnverifiedOrderingFile': [
+ 'gs://path1', 'gs://path2', 'gs://path3']},
+ {'chrome_cwp_profile': 'CWPVERSION'})
def testHandlesDuplicateInputArtifacts(self):
request = toolchain_pb2.PrepareForToolchainBuildRequest(
@@ -251,7 +272,7 @@
self.prep.assert_called_once_with(
'UnverifiedOrderingFile', None, '', '', {
'UnverifiedOrderingFile': [
- 'gs://path1', 'gs://path2', 'gs://path3']})
+ 'gs://path1', 'gs://path2', 'gs://path3']}, {})
class BundleToolchainTest(cros_test_lib.MockTempDirTestCase,