Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(253)

Side by Side Diff: ctest/ctest.py

Issue 6677165: Add feature to ctest that allows it to run against the latest image if no latest candidate exists. (Closed) Base URL: http://git.chromium.org/git/crostestutils.git@master
Patch Set: Created 9 years, 8 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch | Annotate | Revision Log
« no previous file with comments | « no previous file | no next file » | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
1 #!/usr/bin/python 1 #!/usr/bin/python
2 # 2 #
3 # Copyright (c) 2010 The Chromium OS Authors. All rights reserved. 3 # Copyright (c) 2010 The Chromium OS Authors. All rights reserved.
4 # Use of this source code is governed by a BSD-style license that can be 4 # Use of this source code is governed by a BSD-style license that can be
5 # found in the LICENSE file. 5 # found in the LICENSE file.
6 6
7 """Wrapper for tests that are run on builders.""" 7 """Wrapper for tests that are run on builders."""
8 8
9 import fileinput 9 import fileinput
10 import optparse 10 import optparse
(...skipping 125 matching lines...) Expand 10 before | Expand all | Expand 10 after
136 136
137 zip_dir = os.path.join(zip_base, latest_version) 137 zip_dir = os.path.join(zip_base, latest_version)
138 zip_name = GetLatestLinkFromPage(zip_dir, 138 zip_name = GetLatestLinkFromPage(zip_dir,
139 'ChromeOS-\d+\.\d+\.\d+\.\d+-.*\.zip') 139 'ChromeOS-\d+\.\d+\.\d+\.\d+-.*\.zip')
140 return os.path.join(zip_dir, zip_name) 140 return os.path.join(zip_dir, zip_name)
141 141
142 142
143 def GetLatestZipUrl(board, channel, zip_server_base): 143 def GetLatestZipUrl(board, channel, zip_server_base):
144 """Returns the url of the latest image zip for the given arguments. 144 """Returns the url of the latest image zip for the given arguments.
145 145
146 If the latest does not exist, tries to find the rc equivalent. 146 If the latest does not exist, tries to find the rc equivalent. If neither
147 exist, returns None.
147 148
148 Args: 149 Args:
149 board: board for the image zip. 150 board: board for the image zip.
150 channel: channel for the image zip. 151 channel: channel for the image zip.
151 zip_server_base: base url for zipped images. 152 zip_server_base: base url for zipped images.
152 """ 153 """
153 try: 154 try:
154 return GetNewestLinkFromZipBase(board, channel, zip_server_base) 155 return GetNewestLinkFromZipBase(board, channel, zip_server_base)
155 except: 156 except:
156 cros_lib.Warning('Failed to get url from standard zip base. Trying rc.') 157 cros_lib.Warning('Failed to get url from zip base.')
158 try:
157 return GetNewestLinkFromZipBase(board + '-rc', channel, zip_server_base) 159 return GetNewestLinkFromZipBase(board + '-rc', channel, zip_server_base)
160 except:
dgarrett 2011/04/05 23:36:38 I know you're just following pattern, but these re
161 cros_lib.Warning('Failed to get url from zip base for release candidates.')
162 return None
158 163
159 164
160 def GrabZipAndExtractImage(zip_url, download_folder, image_name) : 165 def GrabZipAndExtractImage(zip_url, download_folder, image_name) :
161 """Downloads the zip and extracts the given image. 166 """Downloads the zip and extracts the given image.
162 167
163 Doesn't re-download if matching version found already in download folder. 168 Doesn't re-download if matching version found already in download folder.
164 Args: 169 Args:
165 zip_url - url for the image. 170 zip_url - url for the image.
166 download_folder - download folder to store zip file and extracted images. 171 download_folder - download folder to store zip file and extracted images.
167 image_name - name of the image to extract from the zip file. 172 image_name - name of the image to extract from the zip file.
(...skipping 67 matching lines...) Expand 10 before | Expand all | Expand 10 after
235 board: the board for the latest image. 240 board: the board for the latest image.
236 channel: the channel to run the au test harness against. 241 channel: the channel to run the au test harness against.
237 zip_server_base: base url for zipped images. 242 zip_server_base: base url for zipped images.
238 no_graphics: boolean - If True, disable graphics during vm test. 243 no_graphics: boolean - If True, disable graphics during vm test.
239 type: which test harness to run. Possible values: real, vm. 244 type: which test harness to run. Possible values: real, vm.
240 remote: ip address for real test harness run. 245 remote: ip address for real test harness run.
241 clean: Clean the state of test harness before running. 246 clean: Clean the state of test harness before running.
242 test_results_root: Root directory to store au_test_harness results. 247 test_results_root: Root directory to store au_test_harness results.
243 """ 248 """
244 crosutils_root = os.path.join(constants.SOURCE_ROOT, 'src', 'scripts') 249 crosutils_root = os.path.join(constants.SOURCE_ROOT, 'src', 'scripts')
250
251 # Grab the latest image we've built.
252 return_object = cros_lib.RunCommand(
253 ['./get_latest_image.sh', '--board=%s' % board], cwd=crosutils_root,
254 redirect_stdout=True, print_cmd=True)
255
256 latest_image_dir = return_object.output.strip()
257 target_image = os.path.join(latest_image_dir, _IMAGE_TO_EXTRACT)
258
259 # Grab the latest official build for this board to use as the base image.
260 # If it doesn't exist, run the update test against itself.
245 download_folder = os.path.abspath('latest_download') 261 download_folder = os.path.abspath('latest_download')
246 zip_url = GetLatestZipUrl(board, channel, zip_server_base) 262 zip_url = GetLatestZipUrl(board, channel, zip_server_base)
247 GrabZipAndExtractImage(zip_url, download_folder, _IMAGE_TO_EXTRACT)
248 263
249 # Tests go here. 264 base_image = None
250 return_object = cros_lib.RunCommand( 265 if zip_url:
251 ['./get_latest_image.sh', '--board=%s' % board], cwd=crosutils_root, 266 GrabZipAndExtractImage(zip_url, download_folder, _IMAGE_TO_EXTRACT)
252 redirect_stdout=True, print_cmd=True) 267 base_image = os.path.join(download_folder, _IMAGE_TO_EXTRACT)
253 268 else:
254 latest_image = return_object.output.strip() 269 base_image = target_image
255 270
256 update_engine_path = os.path.join(crosutils_root, '..', 'platform', 271 update_engine_path = os.path.join(crosutils_root, '..', 'platform',
257 'update_engine') 272 'update_engine')
258 273
259 private_key_path = os.path.join(update_engine_path, 'unittest_key.pem') 274 private_key_path = os.path.join(update_engine_path, 'unittest_key.pem')
260 public_key_path = GeneratePublicKey(private_key_path) 275 public_key_path = GeneratePublicKey(private_key_path)
261 276
262 cmd = ['bin/cros_au_test_harness', 277 cmd = ['bin/cros_au_test_harness',
263 '--base_image=%s' % os.path.join(download_folder, 278 '--base_image=%s' % base_image,
264 _IMAGE_TO_EXTRACT), 279 '--target_image=%s' % target_image,
265 '--target_image=%s' % os.path.join(latest_image,
266 _IMAGE_TO_EXTRACT),
267 '--board=%s' % board, 280 '--board=%s' % board,
268 '--type=%s' % type, 281 '--type=%s' % type,
269 '--remote=%s' % remote, 282 '--remote=%s' % remote,
270 '--private_key=%s' % private_key_path, 283 '--private_key=%s' % private_key_path,
271 '--public_key=%s' % public_key_path, 284 '--public_key=%s' % public_key_path,
272 ] 285 ]
273 if test_results_root: cmd.append('--test_results_root=%s' % test_results_root) 286 if test_results_root: cmd.append('--test_results_root=%s' % test_results_root)
274 if no_graphics: cmd.append('--no_graphics') 287 if no_graphics: cmd.append('--no_graphics')
275 if clean: cmd.append('--clean') 288 if clean: cmd.append('--clean')
276 289
(...skipping 30 matching lines...) Expand all
307 if not options.zipbase: parser.error('Need zip url base to get images.') 320 if not options.zipbase: parser.error('Need zip url base to get images.')
308 321
309 RunAUTestHarness(options.board, options.channel, options.zipbase, 322 RunAUTestHarness(options.board, options.channel, options.zipbase,
310 options.no_graphics, options.type, options.remote, 323 options.no_graphics, options.type, options.remote,
311 not options.cache, options.test_results_root) 324 not options.cache, options.test_results_root)
312 325
313 326
314 if __name__ == '__main__': 327 if __name__ == '__main__':
315 main() 328 main()
316 329
OLDNEW
« no previous file with comments | « no previous file | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698