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