| # 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 = "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) |