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

Side by Side Diff: bin/cros_au_test_harness.py

Issue 4165009: Add components to pass vm flag to dev server. (Closed) Base URL: http://git.chromium.org/git/crosutils.git
Patch Set: Nit Created 10 years, 1 month 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 | bin/cros_run_vm_update » ('j') | 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 import optparse 7 import optparse
8 import os 8 import os
9 import sys 9 import sys
10 import unittest 10 import unittest
11 11
12 sys.path.append(os.path.join(os.path.dirname(__file__), '../lib')) 12 sys.path.append(os.path.join(os.path.dirname(__file__), '../lib'))
13 from cros_build_lib import Die 13 from cros_build_lib import Die
14 from cros_build_lib import Info 14 from cros_build_lib import Info
15 from cros_build_lib import ReinterpretPathForChroot 15 from cros_build_lib import ReinterpretPathForChroot
16 from cros_build_lib import RunCommand 16 from cros_build_lib import RunCommand
17 from cros_build_lib import Warning 17 from cros_build_lib import Warning
18 18
19 19 # VM Constants.
20 _KVM_PID_FILE = '/tmp/harness_pid'
21 _FULL_VDISK_SIZE = 6072 20 _FULL_VDISK_SIZE = 6072
22 _FULL_STATEFULFS_SIZE = 3074 21 _FULL_STATEFULFS_SIZE = 3074
22 _KVM_PID_FILE = '/tmp/harness_pid'
23 _VERIFY_SUITE = 'suite_Smoke'
23 24
24 # Globals to communicate options to unit tests. 25 # Globals to communicate options to unit tests.
25 global base_image_path 26 global base_image_path
26 global board 27 global board
27 global remote 28 global remote
28 global target_image_path 29 global target_image_path
29 global vm_graphics_flag 30 global vm_graphics_flag
30 31
31 32
32 _VERIFY_SUITE = 'suite_Smoke'
33
34 class AUTest(object): 33 class AUTest(object):
35 """Abstract interface that defines an Auto Update test.""" 34 """Abstract interface that defines an Auto Update test."""
36 source_image = '' 35 source_image = ''
37 use_delta_updates = False 36 use_delta_updates = False
38 37
39 def setUp(self): 38 def setUp(self):
40 unittest.TestCase.setUp(self) 39 unittest.TestCase.setUp(self)
41 # Set these up as they are used often. 40 # Set these up as they are used often.
42 self.crosutils = os.path.join(os.path.dirname(__file__), '..') 41 self.crosutils = os.path.join(os.path.dirname(__file__), '..')
43 self.crosutilsbin = os.path.join(os.path.dirname(__file__)) 42 self.crosutilsbin = os.path.join(os.path.dirname(__file__))
(...skipping 198 matching lines...) Expand 10 before | Expand all | Expand 10 after
242 enter_chroot=False) 241 enter_chroot=False)
243 RunCommand(['sudo', 'rm', pid_file], enter_chroot=False) 242 RunCommand(['sudo', 'rm', pid_file], enter_chroot=False)
244 243
245 def setUp(self): 244 def setUp(self):
246 """Unit test overriden method. Is called before every test.""" 245 """Unit test overriden method. Is called before every test."""
247 AUTest.setUp(self) 246 AUTest.setUp(self)
248 self._KillExistingVM(_KVM_PID_FILE) 247 self._KillExistingVM(_KVM_PID_FILE)
249 248
250 def PrepareBase(self): 249 def PrepareBase(self):
251 """Creates an update-able VM based on base image.""" 250 """Creates an update-able VM based on base image."""
251 self.vm_image_path = '%s/chromiumos_qemu_image.bin' % os.path.dirname(
252 base_image_path)
252 253
253 self.vm_image_path = ('%s/chromiumos_qemu_image.bin' % os.path.dirname(
254 base_image_path))
255 if not os.path.exists(self.vm_image_path): 254 if not os.path.exists(self.vm_image_path):
256 Info('Qemu image not found, creating one.') 255 Info('Qemu image %s not found, creating one.' % self.vm_image_path)
257 RunCommand(['%s/image_to_vm.sh' % self.crosutils, 256 RunCommand(['%s/image_to_vm.sh' % self.crosutils,
258 '--full', 257 '--full',
259 '--from=%s' % ReinterpretPathForChroot( 258 '--from=%s' % ReinterpretPathForChroot(
260 os.path.dirname(base_image_path)), 259 os.path.dirname(base_image_path)),
261 '--vdisk_size=%s' % _FULL_VDISK_SIZE, 260 '--vdisk_size=%s' % _FULL_VDISK_SIZE,
262 '--statefulfs_size=%s' % _FULL_STATEFULFS_SIZE, 261 '--statefulfs_size=%s' % _FULL_STATEFULFS_SIZE,
263 '--board=%s' % board, 262 '--board=%s' % board,
264 '--test_image'], enter_chroot=True) 263 '--test_image'], enter_chroot=True)
265 else: 264 else:
266 Info('Using existing VM image') 265 Info('Using existing VM image %s' % self.vm_image_path)
267 266
268 self.assertTrue(os.path.exists(self.vm_image_path)) 267 self.assertTrue(os.path.exists(self.vm_image_path))
269 268
270 def UpdateImage(self, image_path, stateful_change='old'): 269 def UpdateImage(self, image_path, stateful_change='old'):
271 """Updates VM image with image_path.""" 270 """Updates VM image with image_path."""
272 stateful_change_flag = self.GetStatefulChangeFlag(stateful_change) 271 stateful_change_flag = self.GetStatefulChangeFlag(stateful_change)
273 if self.source_image == base_image_path: 272 if self.source_image == base_image_path:
274 self.source_image = self.vm_image_path 273 self.source_image = self.vm_image_path
275 274
276 RunCommand(['%s/cros_run_vm_update' % self.crosutilsbin, 275 RunCommand(['%s/cros_run_vm_update' % self.crosutilsbin,
(...skipping 33 matching lines...) Expand 10 before | Expand all | Expand 10 after
310 help='board for the images.') 309 help='board for the images.')
311 parser.add_option('-p', '--type', default='vm', 310 parser.add_option('-p', '--type', default='vm',
312 help='type of test to run: [vm, real]. Default: vm.') 311 help='type of test to run: [vm, real]. Default: vm.')
313 parser.add_option('-m', '--remote', 312 parser.add_option('-m', '--remote',
314 help='Remote address for real test.') 313 help='Remote address for real test.')
315 parser.add_option('--no_graphics', action='store_true', 314 parser.add_option('--no_graphics', action='store_true',
316 help='Disable graphics for the vm test.') 315 help='Disable graphics for the vm test.')
317 parser.add_option('--no_delta', action='store_false', default=True, 316 parser.add_option('--no_delta', action='store_false', default=True,
318 dest='delta', 317 dest='delta',
319 help='Disable using delta updates.') 318 help='Disable using delta updates.')
319 parser.add_option('-q', '--quick_test', default=False, action='store_true',
320 help='Use a basic test to verify image.')
320 # Set the usage to include flags. 321 # Set the usage to include flags.
321 parser.set_usage(parser.format_help()) 322 parser.set_usage(parser.format_help())
322 # Parse existing sys.argv so we can pass rest to unittest.main. 323 # Parse existing sys.argv so we can pass rest to unittest.main.
323 (options, sys.argv) = parser.parse_args(sys.argv) 324 (options, sys.argv) = parser.parse_args(sys.argv)
324 325
325 base_image_path = options.base_image 326 base_image_path = options.base_image
326 target_image_path = options.target_image 327 target_image_path = options.target_image
327 board = options.board 328 board = options.board
328 329
329 if not base_image_path: 330 if not base_image_path:
330 parser.error('Need path to base image for vm.') 331 parser.error('Need path to base image for vm.')
331 elif not os.path.exists(base_image_path): 332 elif not os.path.exists(base_image_path):
332 Die('%s does not exist' % base_image_path) 333 Die('%s does not exist' % base_image_path)
333 334
334 if not target_image_path: 335 if not target_image_path:
335 parser.error('Need path to target image to update with.') 336 parser.error('Need path to target image to update with.')
336 elif not os.path.exists(target_image_path): 337 elif not os.path.exists(target_image_path):
337 Die('%s does not exist' % target_image_path) 338 Die('%s does not exist' % target_image_path)
338 339
339 if not board: 340 if not board:
340 parser.error('Need board to convert base image to vm.') 341 parser.error('Need board to convert base image to vm.')
341 342
342 # Communicate flags to tests. 343 # Communicate flags to tests.
343 vm_graphics_flag = '' 344 vm_graphics_flag = ''
344 if options.no_graphics: vm_graphics_flag = '--no_graphics' 345 if options.no_graphics: vm_graphics_flag = '--no_graphics'
345 346 if options.quick_test: _VERIFY_SUITE = 'build_RootFilesystemSize'
346 AUTest.use_delta_updates = options.delta 347 AUTest.use_delta_updates = options.delta
347 348
348 # Only run the test harness we care about. 349 # Only run the test harness we care about.
349 if options.type == 'vm': 350 if options.type == 'vm':
350 suite = unittest.TestLoader().loadTestsFromTestCase(VirtualAUTest) 351 suite = unittest.TestLoader().loadTestsFromTestCase(VirtualAUTest)
351 test_result = unittest.TextTestRunner(verbosity=2).run(suite) 352 test_result = unittest.TextTestRunner(verbosity=2).run(suite)
352 elif options.type == 'real': 353 elif options.type == 'real':
353 if not options.remote: 354 if not options.remote:
354 parser.error('Real tests require a remote test machine.') 355 parser.error('Real tests require a remote test machine.')
355 else: 356 else:
356 remote = options.remote 357 remote = options.remote
357 358
358 suite = unittest.TestLoader().loadTestsFromTestCase(RealAUTest) 359 suite = unittest.TestLoader().loadTestsFromTestCase(RealAUTest)
359 test_result = unittest.TextTestRunner(verbosity=2).run(suite) 360 test_result = unittest.TextTestRunner(verbosity=2).run(suite)
360 else: 361 else:
361 parser.error('Could not parse harness type %s.' % options.type) 362 parser.error('Could not parse harness type %s.' % options.type)
362 363
363 if not test_result.wasSuccessful(): 364 if not test_result.wasSuccessful():
364 Die('Test harness was not successful') 365 Die('Test harness was not successful')
OLDNEW
« no previous file with comments | « no previous file | bin/cros_run_vm_update » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698