# Copyright (c) 2012 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.

from autotest_lib.server import utils

AUTHOR = "Chrome OS Team"
NAME = "firmware_DevFwNormalBoot"
PURPOSE = "Servo based test forcing normal boot on dev firmware"
CRITERIA = "This test will fail if firmware does not enter recovery mode"
SUITE = "faft,faft_bios,faft_dev,faft_lv3"
TIME = "SHORT"
TEST_CATEGORY = "Functional"
TEST_CLASS = "firmware"
TEST_TYPE = "server"

DOC = """
This test is only meaningful on Alex/ZGB, which contains two different types of
RW firmware: normal and developer firmware. It requires a USB disk plugged-in,
which contains a Chrome OS test image (built by "build_image --test").
On runtime, this test sets developer firmware in A and then corrupts the
firmware in B. It forces to do a normal boot. Going to recovery is expected.
"""

args_dict = utils.args_to_dict(args)
servo_args = hosts.CrosHost.get_servo_arguments(args_dict)

def run_devfwnormalboot(machine):
    host = hosts.create_host(machine, servo_args=servo_args)
    job.run_test("firmware_DevFwNormalBoot", host=host, cmdline_args=args,
                 disable_sysinfo=True, dev_mode=True, tag="dev")

parallel_simple(run_devfwnormalboot, machines)
