65 lines
		
	
	
		
			2.3 KiB
		
	
	
	
		
			Plaintext
		
	
	
	
			
		
		
	
	
			65 lines
		
	
	
		
			2.3 KiB
		
	
	
	
		
			Plaintext
		
	
	
	
| # Copyright (c) 2010 The Chromium OS Authors. All rights reserved.
 | |
| # Use of this source code is governed by a BSD-style license that can be
 | |
| # found in the LICENSE file.
 | |
| 
 | |
| AUTHOR = "Chrome OS Team"
 | |
| NAME = "platform_InstallFW"
 | |
| TIME = "MEDIUM"
 | |
| TEST_CATEGORY = "Install"
 | |
| TEST_CLASS = "platform"
 | |
| TEST_TYPE = "server"
 | |
| 
 | |
| DOC = """
 | |
| This test install the BIOS/EC on a specified device.
 | |
| This is useful for testing firmware.
 | |
| Here is the command to install a given firmware, which is either a raw binary
 | |
| or a shellball:
 | |
|   test_that --args='fw_path=<PATH_TO_FW_FILE>
 | |
|                     fw_name=<NAME_OF_THE_FILE>'
 | |
|                     fw_type=<TYPE_OF_FW>
 | |
|             --board=<board name>
 | |
|             <IP addres>
 | |
|             platform_InstallFW
 | |
| or install the local shellball (/usr/sbin/chromeos-firmwareupdate) in the
 | |
| current client image:
 | |
|   test_that --args='fw_path=local
 | |
|                     fw_type=<bios/ec>'
 | |
|             --board=<board name>
 | |
|             <IP addres>
 | |
|             platform_InstallFW
 | |
| """
 | |
| 
 | |
| import os
 | |
| from autotest_lib.client.common_lib import error
 | |
| 
 | |
| # Convert autoserv args to something usable.
 | |
| opts = dict([[k, v] for (k, _, v) in [x.partition('=') for x in args]])
 | |
| 
 | |
| def run_installfw(machine):
 | |
|     # Verify FW type in arg.
 | |
|     if 'fw_type' not in opts:
 | |
|         raise error.TestFail('No --fw_type specified')
 | |
|     # Verify fw_type value either 'bios' or 'ec'.
 | |
|     if not (opts['fw_type'] == 'bios' or opts['fw_type'] == 'ec'):
 | |
|         raise error.TestFail('Wrong --fw_type specified.  '
 | |
|                              'Correct FW Options are bios or ec.')
 | |
|     # Verify FW path arg.
 | |
|     if 'fw_path' not in opts:
 | |
|         raise error.TestFail('No --fw_path specified')
 | |
|     # Verify fw_name.
 | |
|     if 'fw_name' not in opts:
 | |
|         if opts['fw_path'] == 'local':
 | |
|             opts['fw_name'] = None
 | |
|         elif os.path.isfile(opts['fw_path']):
 | |
|             opts['fw_name'] = os.path.basename(opts['fw_path'])
 | |
|             opts['fw_path'] = os.path.dirname(opts['fw_path'])
 | |
|         else:
 | |
|             raise error.TestFail('No --fw_name specified')
 | |
|     # Setup the client machine.
 | |
|     host = hosts.create_host(machine)
 | |
|     job.run_test("platform_InstallFW", host=host, fw_path=opts['fw_path'],
 | |
|                  fw_type=opts['fw_type'], fw_name=opts['fw_name'],
 | |
|                  disable_sysinfo=True)
 | |
| 
 | |
| parallel_simple(run_installfw, machines)
 |