blob: 8fdbf4f9fb66c1fad6bd44e31e94f5e9bb50ae71 [file] [log] [blame]
Tiancong Wangaf050172019-07-10 11:52:03 -07001# -*- coding: utf-8 -*-
2# Copyright 2019 The Chromium OS Authors. All rights reserved.
3# Use of this source code is governed by a BSD-style license that can be
4# found in the LICENSE file.
5
6"""Unittests for Toolchain-related operations."""
7
8from __future__ import print_function
9
Alex Klein231d2da2019-07-22 16:44:45 -060010from chromite.api import api_config
LaMont Jones5d2edcb2019-12-23 11:32:03 -070011from chromite.api import controller
Tiancong Wangaf050172019-07-10 11:52:03 -070012from chromite.api.controller import toolchain
LaMont Jones5d2edcb2019-12-23 11:32:03 -070013from chromite.api.gen.chromite.api import artifacts_pb2
LaMont Jones4579e8c2019-12-06 14:20:37 -070014from chromite.api.gen.chromite.api import sysroot_pb2
Tiancong Wangaf050172019-07-10 11:52:03 -070015from chromite.api.gen.chromite.api import toolchain_pb2
LaMont Jonesb20b3d92019-11-23 11:47:48 -070016from chromite.api.gen.chromiumos.builder_config_pb2 import BuilderConfig
LaMont Jones4579e8c2019-12-06 14:20:37 -070017from chromite.api.gen.chromiumos import common_pb2
Tiancong Wangaf050172019-07-10 11:52:03 -070018
Tiancong Wang24a3df72019-08-20 15:48:51 -070019from chromite.lib import cros_build_lib
Tiancong Wangaf050172019-07-10 11:52:03 -070020from chromite.lib import cros_test_lib
Tiancong Wangaf050172019-07-10 11:52:03 -070021from chromite.lib import toolchain_util
22
Mike Frysingeref94e4c2020-02-10 23:59:54 -050023
LaMont Jones5d2edcb2019-12-23 11:32:03 -070024# pylint: disable=protected-access
Tiancong Wangaf050172019-07-10 11:52:03 -070025
Tiancong Wang24a3df72019-08-20 15:48:51 -070026class UpdateEbuildWithAFDOArtifactsTest(cros_test_lib.MockTestCase,
27 api_config.ApiConfigMixin):
28 """Unittests for UpdateEbuildWithAFDOArtifacts."""
29
30 @staticmethod
31 def mock_die(message, *args):
32 raise cros_build_lib.DieSystemExit(message % args)
Tiancong Wangaf050172019-07-10 11:52:03 -070033
34 def setUp(self):
Tiancong Wangaf050172019-07-10 11:52:03 -070035 self.board = 'board'
Tiancong Wang24a3df72019-08-20 15:48:51 -070036 self.response = toolchain_pb2.VerifyAFDOArtifactsResponse()
37 self.invalid_artifact_type = toolchain_pb2.BENCHMARK_AFDO
38 self.orderfile_command = self.PatchObject(
39 toolchain_util, 'OrderfileUpdateChromeEbuild', return_value=True)
40 self.kernel_command = self.PatchObject(
41 toolchain_util, 'AFDOUpdateKernelEbuild', return_value=True)
Tiancong Wangf9c736c2019-08-26 13:54:38 -070042 self.chrome_command = self.PatchObject(
43 toolchain_util, 'AFDOUpdateChromeEbuild', return_value=True)
Tiancong Wang24a3df72019-08-20 15:48:51 -070044 self.PatchObject(cros_build_lib, 'Die', new=self.mock_die)
45
46 def _GetRequest(self, build_target=None, artifact_type=None):
47 return toolchain_pb2.VerifyAFDOArtifactsRequest(
48 build_target={'name': build_target},
49 artifact_type=artifact_type,
50 )
Tiancong Wangaf050172019-07-10 11:52:03 -070051
Alex Klein231d2da2019-07-22 16:44:45 -060052 def testValidateOnly(self):
53 """Sanity check that a validate only call does not execute any logic."""
54 patch = self.PatchObject(toolchain_util, 'OrderfileUpdateChromeEbuild')
Tiancong Wang24a3df72019-08-20 15:48:51 -070055 request = self._GetRequest(
56 build_target=self.board, artifact_type=toolchain_pb2.ORDERFILE)
57 toolchain.UpdateEbuildWithAFDOArtifacts(request, self.response,
58 self.validate_only_config)
Alex Klein231d2da2019-07-22 16:44:45 -060059 patch.assert_not_called()
60
Michael Mortensen54bd70a2019-11-21 14:45:38 -070061 def testMockCall(self):
62 """Test that a mock call does not execute logic, returns mock value."""
63 patch = self.PatchObject(toolchain_util, 'OrderfileUpdateChromeEbuild')
64 request = self._GetRequest(
65 build_target=self.board, artifact_type=toolchain_pb2.ORDERFILE)
66 toolchain.UpdateEbuildWithAFDOArtifacts(request, self.response,
67 self.mock_call_config)
68 patch.assert_not_called()
69 self.assertEqual(self.response.status, True)
70
Tiancong Wang24a3df72019-08-20 15:48:51 -070071 def testWrongArtifactType(self):
72 """Test passing wrong artifact type."""
73 request = self._GetRequest(
74 build_target=self.board, artifact_type=self.invalid_artifact_type)
75 with self.assertRaises(cros_build_lib.DieSystemExit) as context:
76 toolchain.UpdateEbuildWithAFDOArtifacts(request, self.response,
77 self.api_config)
78 self.assertIn('artifact_type (%d) must be in' % self.invalid_artifact_type,
79 str(context.exception))
80
81 def testOrderfileSuccess(self):
82 """Test the command is called correctly with orderfile."""
83 request = self._GetRequest(
84 build_target=self.board, artifact_type=toolchain_pb2.ORDERFILE)
85 toolchain.UpdateEbuildWithAFDOArtifacts(request, self.response,
86 self.api_config)
87 self.orderfile_command.assert_called_once_with(self.board)
88 self.kernel_command.assert_not_called()
Tiancong Wangf9c736c2019-08-26 13:54:38 -070089 self.chrome_command.assert_not_called()
Tiancong Wang24a3df72019-08-20 15:48:51 -070090
91 def testKernelAFDOSuccess(self):
92 """Test the command is called correctly with kernel afdo."""
93 request = self._GetRequest(
94 build_target=self.board, artifact_type=toolchain_pb2.KERNEL_AFDO)
95 toolchain.UpdateEbuildWithAFDOArtifacts(request, self.response,
96 self.api_config)
97 self.kernel_command.assert_called_once_with(self.board)
98 self.orderfile_command.assert_not_called()
Tiancong Wangf9c736c2019-08-26 13:54:38 -070099 self.chrome_command.assert_not_called()
100
101 def testChromeAFDOSuccess(self):
102 """Test the command is called correctly with Chrome afdo."""
103 request = self._GetRequest(
104 build_target=self.board, artifact_type=toolchain_pb2.CHROME_AFDO)
105 toolchain.UpdateEbuildWithAFDOArtifacts(request, self.response,
106 self.api_config)
107 self.chrome_command.assert_called_once_with(self.board)
108 self.orderfile_command.assert_not_called()
109 self.kernel_command.assert_not_called()
Tiancong Wangaf050172019-07-10 11:52:03 -0700110
111
Tiancong Wangf9c736c2019-08-26 13:54:38 -0700112class UploadVettedFDOArtifactsTest(UpdateEbuildWithAFDOArtifactsTest):
Tiancong Wang24a3df72019-08-20 15:48:51 -0700113 """Unittests for UploadVettedAFDOArtifacts."""
114
115 @staticmethod
116 def mock_die(message, *args):
117 raise cros_build_lib.DieSystemExit(message % args)
Tiancong Wangaf050172019-07-10 11:52:03 -0700118
119 def setUp(self):
Tiancong Wang24a3df72019-08-20 15:48:51 -0700120 self.board = 'board'
121 self.response = toolchain_pb2.VerifyAFDOArtifactsResponse()
122 self.invalid_artifact_type = toolchain_pb2.BENCHMARK_AFDO
123 self.command = self.PatchObject(
Tiancong Wangaf050172019-07-10 11:52:03 -0700124 toolchain_util,
Tiancong Wang24a3df72019-08-20 15:48:51 -0700125 'UploadAndPublishVettedAFDOArtifacts',
126 return_value=True)
127 self.PatchObject(cros_build_lib, 'Die', new=self.mock_die)
Tiancong Wangaf050172019-07-10 11:52:03 -0700128
Alex Klein231d2da2019-07-22 16:44:45 -0600129 def testValidateOnly(self):
130 """Sanity check that a validate only call does not execute any logic."""
Tiancong Wang24a3df72019-08-20 15:48:51 -0700131 request = self._GetRequest(
132 build_target=self.board, artifact_type=toolchain_pb2.ORDERFILE)
Michael Mortensen54bd70a2019-11-21 14:45:38 -0700133 toolchain.UploadVettedAFDOArtifacts(request, self.response,
134 self.validate_only_config)
Tiancong Wang24a3df72019-08-20 15:48:51 -0700135 self.command.assert_not_called()
Alex Klein231d2da2019-07-22 16:44:45 -0600136
Michael Mortensen54bd70a2019-11-21 14:45:38 -0700137 def testMockCall(self):
138 """Test that a mock call does not execute logic, returns mock value."""
139 request = self._GetRequest(
140 build_target=self.board, artifact_type=toolchain_pb2.ORDERFILE)
141 toolchain.UploadVettedAFDOArtifacts(request, self.response,
142 self.mock_call_config)
143 self.command.assert_not_called()
144 self.assertEqual(self.response.status, True)
145
Tiancong Wang24a3df72019-08-20 15:48:51 -0700146 def testWrongArtifactType(self):
147 """Test passing wrong artifact type."""
148 request = self._GetRequest(
149 build_target=self.board, artifact_type=self.invalid_artifact_type)
150 with self.assertRaises(cros_build_lib.DieSystemExit) as context:
Michael Mortensen54bd70a2019-11-21 14:45:38 -0700151 toolchain.UploadVettedAFDOArtifacts(request, self.response,
152 self.api_config)
Tiancong Wang24a3df72019-08-20 15:48:51 -0700153 self.assertIn('artifact_type (%d) must be in' % self.invalid_artifact_type,
154 str(context.exception))
Alex Klein231d2da2019-07-22 16:44:45 -0600155
Tiancong Wang24a3df72019-08-20 15:48:51 -0700156 def testOrderfileSuccess(self):
157 """Test the command is called correctly with orderfile."""
158 request = self._GetRequest(
159 build_target=self.board, artifact_type=toolchain_pb2.ORDERFILE)
160 toolchain.UploadVettedAFDOArtifacts(request, self.response, self.api_config)
161 self.command.assert_called_once_with('orderfile', self.board)
Tiancong Wangaf050172019-07-10 11:52:03 -0700162
Tiancong Wang24a3df72019-08-20 15:48:51 -0700163 def testKernelAFDOSuccess(self):
164 """Test the command is called correctly with kernel afdo."""
165 request = self._GetRequest(
166 build_target=self.board, artifact_type=toolchain_pb2.KERNEL_AFDO)
167 toolchain.UploadVettedAFDOArtifacts(request, self.response, self.api_config)
168 self.command.assert_called_once_with('kernel_afdo', self.board)
Tiancong Wangf9c736c2019-08-26 13:54:38 -0700169
170 def testChromeAFDOSuccess(self):
171 """Test the command is called correctly with Chrome afdo."""
172 request = self._GetRequest(
173 build_target=self.board, artifact_type=toolchain_pb2.CHROME_AFDO)
174 toolchain.UploadVettedAFDOArtifacts(request, self.response, self.api_config)
175 self.command.assert_called_once_with('chrome_afdo', self.board)
LaMont Jonesb20b3d92019-11-23 11:47:48 -0700176
177
LaMont Jones4579e8c2019-12-06 14:20:37 -0700178class PrepareForBuildTest(cros_test_lib.MockTempDirTestCase,
LaMont Jonesb20b3d92019-11-23 11:47:48 -0700179 api_config.ApiConfigMixin):
180 """Unittests for PrepareForBuild."""
181
182 def setUp(self):
183 self.response = toolchain_pb2.PrepareForToolchainBuildResponse()
LaMont Jones5d2edcb2019-12-23 11:32:03 -0700184 self.prep = self.PatchObject(
185 toolchain_util, 'PrepareForBuild',
186 return_value=toolchain_util.PrepareForBuildReturn.NEEDED)
187 self.bundle = self.PatchObject(
188 toolchain_util, 'BundleArtifacts', return_value=[])
189 self.PatchObject(toolchain, '_TOOLCHAIN_ARTIFACT_HANDLERS', {
LaMont Jonescd1503d2020-03-04 09:09:59 -0700190 BuilderConfig.Artifacts.UNVERIFIED_CHROME_LLVM_ORDERFILE:
LaMont Jonesd3944582020-03-04 10:37:05 -0700191 toolchain._Handlers('UnverifiedChromeLlvmOrderfile',
LaMont Jones5d2edcb2019-12-23 11:32:03 -0700192 self.prep, self.bundle),
193 })
LaMont Jonesb20b3d92019-11-23 11:47:48 -0700194
LaMont Jones45ca6c42020-02-05 09:39:09 -0700195 def _GetRequest(
196 self, artifact_types=None, input_artifacts=None, additional_args=None):
LaMont Jones4579e8c2019-12-06 14:20:37 -0700197 chroot = common_pb2.Chroot(path=self.tempdir)
198 sysroot = sysroot_pb2.Sysroot(
199 path='/build/board', build_target=common_pb2.BuildTarget(name='board'))
LaMont Jonesb20b3d92019-11-23 11:47:48 -0700200 return toolchain_pb2.PrepareForToolchainBuildRequest(
LaMont Jones45ca6c42020-02-05 09:39:09 -0700201 artifact_types=artifact_types, chroot=chroot, sysroot=sysroot,
202 input_artifacts=input_artifacts, additional_args=additional_args)
LaMont Jonesb20b3d92019-11-23 11:47:48 -0700203
LaMont Jones5d2edcb2019-12-23 11:32:03 -0700204 def testRaisesForUnknown(self):
LaMont Jonesb20b3d92019-11-23 11:47:48 -0700205 request = self._GetRequest([BuilderConfig.Artifacts.IMAGE_ARCHIVES])
LaMont Jones5d2edcb2019-12-23 11:32:03 -0700206 self.assertRaises(
207 KeyError,
208 toolchain.PrepareForBuild, request, self.response, self.api_config)
209
210 def testAcceptsNone(self):
211 request = toolchain_pb2.PrepareForToolchainBuildRequest(
LaMont Jonescd1503d2020-03-04 09:09:59 -0700212 artifact_types=[
213 BuilderConfig.Artifacts.UNVERIFIED_CHROME_LLVM_ORDERFILE],
LaMont Jones5d2edcb2019-12-23 11:32:03 -0700214 chroot=None, sysroot=None)
LaMont Jonesb20b3d92019-11-23 11:47:48 -0700215 toolchain.PrepareForBuild(request, self.response, self.api_config)
LaMont Jones5d2edcb2019-12-23 11:32:03 -0700216 self.prep.assert_called_once_with(
LaMont Jonesd3944582020-03-04 10:37:05 -0700217 'UnverifiedChromeLlvmOrderfile', None, '', '', {}, {})
LaMont Jones5d2edcb2019-12-23 11:32:03 -0700218
219 def testHandlesUnknownInputArtifacts(self):
220 request = toolchain_pb2.PrepareForToolchainBuildRequest(
LaMont Jonescd1503d2020-03-04 09:09:59 -0700221 artifact_types=[
222 BuilderConfig.Artifacts.UNVERIFIED_CHROME_LLVM_ORDERFILE],
LaMont Jones5d2edcb2019-12-23 11:32:03 -0700223 chroot=None, sysroot=None, input_artifacts=[
224 BuilderConfig.Artifacts.InputArtifactInfo(
225 input_artifact_type=BuilderConfig.Artifacts.IMAGE_ZIP,
226 input_artifact_gs_locations=['path1']),
227 ])
228 toolchain.PrepareForBuild(request, self.response, self.api_config)
229 self.prep.assert_called_once_with(
LaMont Jonesd3944582020-03-04 10:37:05 -0700230 'UnverifiedChromeLlvmOrderfile', None, '', '', {}, {})
LaMont Jones45ca6c42020-02-05 09:39:09 -0700231
LaMont Jonese7821672020-04-09 08:56:26 -0600232 def testPassesProfileInfo(self):
LaMont Jones45ca6c42020-02-05 09:39:09 -0700233 request = toolchain_pb2.PrepareForToolchainBuildRequest(
LaMont Jonescd1503d2020-03-04 09:09:59 -0700234 artifact_types=[
235 BuilderConfig.Artifacts.UNVERIFIED_CHROME_LLVM_ORDERFILE],
LaMont Jones45ca6c42020-02-05 09:39:09 -0700236 chroot=None, sysroot=None, input_artifacts=[
237 BuilderConfig.Artifacts.InputArtifactInfo(
238 input_artifact_type=\
LaMont Jonescd1503d2020-03-04 09:09:59 -0700239 BuilderConfig.Artifacts.UNVERIFIED_CHROME_LLVM_ORDERFILE,
LaMont Jones45ca6c42020-02-05 09:39:09 -0700240 input_artifact_gs_locations=['path1', 'path2']),
241 BuilderConfig.Artifacts.InputArtifactInfo(
242 input_artifact_type=\
LaMont Jonescd1503d2020-03-04 09:09:59 -0700243 BuilderConfig.Artifacts.UNVERIFIED_CHROME_LLVM_ORDERFILE,
LaMont Jones45ca6c42020-02-05 09:39:09 -0700244 input_artifact_gs_locations=['path3']),
245 ],
LaMont Jonese7821672020-04-09 08:56:26 -0600246 profile_info=common_pb2.ArtifactProfileInfo(
LaMont Jones45ca6c42020-02-05 09:39:09 -0700247 chrome_cwp_profile='CWPVERSION'),
248 )
249 toolchain.PrepareForBuild(request, self.response, self.api_config)
250 self.prep.assert_called_once_with(
LaMont Jonesd3944582020-03-04 10:37:05 -0700251 'UnverifiedChromeLlvmOrderfile', None, '', '', {
252 'UnverifiedChromeLlvmOrderfile': [
253 'gs://path1', 'gs://path2', 'gs://path3'],
254 },
LaMont Jones45ca6c42020-02-05 09:39:09 -0700255 {'chrome_cwp_profile': 'CWPVERSION'})
LaMont Jones5d2edcb2019-12-23 11:32:03 -0700256
LaMont Jonese7821672020-04-09 08:56:26 -0600257 def testPassesProfileInfoAfdoRelease(self):
258 request = toolchain_pb2.PrepareForToolchainBuildRequest(
259 artifact_types=[
260 BuilderConfig.Artifacts.UNVERIFIED_CHROME_LLVM_ORDERFILE],
261 chroot=None, sysroot=None, input_artifacts=[
262 BuilderConfig.Artifacts.InputArtifactInfo(
263 input_artifact_type=\
264 BuilderConfig.Artifacts.UNVERIFIED_CHROME_LLVM_ORDERFILE,
265 input_artifact_gs_locations=['path1', 'path2']),
266 BuilderConfig.Artifacts.InputArtifactInfo(
267 input_artifact_type=\
268 BuilderConfig.Artifacts.UNVERIFIED_CHROME_LLVM_ORDERFILE,
269 input_artifact_gs_locations=['path3']),
270 ],
271 profile_info=common_pb2.ArtifactProfileInfo(
272 afdo_release=common_pb2.AfdoRelease(
273 chrome_cwp_profile='CWPVERSION',
274 image_build_id=1234)),
275 )
276 toolchain.PrepareForBuild(request, self.response, self.api_config)
277 self.prep.assert_called_once_with(
278 'UnverifiedChromeLlvmOrderfile', None, '', '', {
279 'UnverifiedChromeLlvmOrderfile': [
280 'gs://path1', 'gs://path2', 'gs://path3'],
281 },
282 {'chrome_cwp_profile': 'CWPVERSION', 'image_build_id': 1234})
283
LaMont Jones5d2edcb2019-12-23 11:32:03 -0700284 def testHandlesDuplicateInputArtifacts(self):
285 request = toolchain_pb2.PrepareForToolchainBuildRequest(
LaMont Jonescd1503d2020-03-04 09:09:59 -0700286 artifact_types=[
287 BuilderConfig.Artifacts.UNVERIFIED_CHROME_LLVM_ORDERFILE],
LaMont Jones5d2edcb2019-12-23 11:32:03 -0700288 chroot=None, sysroot=None, input_artifacts=[
289 BuilderConfig.Artifacts.InputArtifactInfo(
290 input_artifact_type=\
LaMont Jonescd1503d2020-03-04 09:09:59 -0700291 BuilderConfig.Artifacts.UNVERIFIED_CHROME_LLVM_ORDERFILE,
LaMont Jones5d2edcb2019-12-23 11:32:03 -0700292 input_artifact_gs_locations=['path1', 'path2']),
293 BuilderConfig.Artifacts.InputArtifactInfo(
294 input_artifact_type=\
LaMont Jonescd1503d2020-03-04 09:09:59 -0700295 BuilderConfig.Artifacts.UNVERIFIED_CHROME_LLVM_ORDERFILE,
LaMont Jones5d2edcb2019-12-23 11:32:03 -0700296 input_artifact_gs_locations=['path3']),
297 ])
298 toolchain.PrepareForBuild(request, self.response, self.api_config)
299 self.prep.assert_called_once_with(
LaMont Jonesd3944582020-03-04 10:37:05 -0700300 'UnverifiedChromeLlvmOrderfile', None, '', '', {
301 'UnverifiedChromeLlvmOrderfile': [
302 'gs://path1', 'gs://path2', 'gs://path3'],
303 }, {})
LaMont Jonesb20b3d92019-11-23 11:47:48 -0700304
305
306class BundleToolchainTest(cros_test_lib.MockTempDirTestCase,
307 api_config.ApiConfigMixin):
308 """Unittests for BundleToolchain."""
309
310 def setUp(self):
311 self.response = toolchain_pb2.BundleToolchainResponse()
LaMont Jones5d2edcb2019-12-23 11:32:03 -0700312 self.prep = self.PatchObject(
313 toolchain_util, 'PrepareForBuild',
314 return_value=toolchain_util.PrepareForBuildReturn.NEEDED)
315 self.bundle = self.PatchObject(
316 toolchain_util, 'BundleArtifacts', return_value=[])
317 self.PatchObject(toolchain, '_TOOLCHAIN_ARTIFACT_HANDLERS', {
LaMont Jonescd1503d2020-03-04 09:09:59 -0700318 BuilderConfig.Artifacts.UNVERIFIED_CHROME_LLVM_ORDERFILE:
LaMont Jonesd3944582020-03-04 10:37:05 -0700319 toolchain._Handlers('UnverifiedChromeLlvmOrderfile',
LaMont Jones5d2edcb2019-12-23 11:32:03 -0700320 self.prep, self.bundle),
321 })
LaMont Jonesb20b3d92019-11-23 11:47:48 -0700322
323 def _GetRequest(self, artifact_types=None):
LaMont Jones4579e8c2019-12-06 14:20:37 -0700324 chroot = common_pb2.Chroot(path=self.tempdir)
325 sysroot = sysroot_pb2.Sysroot(
326 path='/build/board', build_target=common_pb2.BuildTarget(name='board'))
LaMont Jonesb20b3d92019-11-23 11:47:48 -0700327 return toolchain_pb2.BundleToolchainRequest(
LaMont Jones4579e8c2019-12-06 14:20:37 -0700328 chroot=chroot, sysroot=sysroot,
LaMont Jonesb20b3d92019-11-23 11:47:48 -0700329 output_dir=self.tempdir,
LaMont Jones4579e8c2019-12-06 14:20:37 -0700330 artifact_types=artifact_types,
LaMont Jonesb20b3d92019-11-23 11:47:48 -0700331 )
332
LaMont Jones5d2edcb2019-12-23 11:32:03 -0700333 def testRaisesForUnknown(self):
LaMont Jonesb20b3d92019-11-23 11:47:48 -0700334 request = self._GetRequest([BuilderConfig.Artifacts.IMAGE_ARCHIVES])
LaMont Jones5d2edcb2019-12-23 11:32:03 -0700335 self.assertEqual(
336 controller.RETURN_CODE_UNRECOVERABLE,
337 toolchain.BundleArtifacts(request, self.response, self.api_config))
Michael Mortensen3232ab32020-01-05 19:14:36 -0700338
339 def testValidateOnly(self):
340 """Sanity check that a validate only call does not execute any logic."""
LaMont Jones5d2edcb2019-12-23 11:32:03 -0700341 request = self._GetRequest(
LaMont Jonescd1503d2020-03-04 09:09:59 -0700342 [BuilderConfig.Artifacts.UNVERIFIED_CHROME_LLVM_ORDERFILE])
Michael Mortensen3232ab32020-01-05 19:14:36 -0700343 toolchain.BundleArtifacts(request, self.response,
344 self.validate_only_config)
LaMont Jones5d2edcb2019-12-23 11:32:03 -0700345 self.bundle.assert_not_called()
346
347 def testSetsArtifactsInfo(self):
348 request = self._GetRequest(
LaMont Jonescd1503d2020-03-04 09:09:59 -0700349 [BuilderConfig.Artifacts.UNVERIFIED_CHROME_LLVM_ORDERFILE])
LaMont Jones5d2edcb2019-12-23 11:32:03 -0700350 self.bundle.return_value = ['artifact.xz']
351 toolchain.BundleArtifacts(request, self.response, self.api_config)
352 self.assertEqual(1, len(self.response.artifacts_info))
353 self.assertEqual(
354 self.response.artifacts_info[0],
355 toolchain_pb2.ArtifactInfo(
LaMont Jonescd1503d2020-03-04 09:09:59 -0700356 artifact_type=(
357 BuilderConfig.Artifacts.UNVERIFIED_CHROME_LLVM_ORDERFILE),
LaMont Jones5d2edcb2019-12-23 11:32:03 -0700358 artifacts=[
359 artifacts_pb2.Artifact(path=self.bundle.return_value[0])]))