# 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_RONormalBoot"
PURPOSE = "Servo based firmware RO normal boot test"
CRITERIA = "This test will fail if disabling RO normal boot flag boots failed"
SUITE = "faft,faft_ec,faft_ec_wp"
TIME = "LONG"
TEST_CATEGORY = "Functional"
TEST_CLASS = "firmware"
TEST_TYPE = "server"

DOC = """
This test disables the RO normal boot flag and checks the next boot result.
"""

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

def run_ronormalboot(machine):
    host = hosts.create_host(machine, servo_args=servo_args)
    job.run_test("firmware_RONormalBoot", host=host, cmdline_args=args,
                 use_faft=True, disable_sysinfo=True,
                 dev_mode=False, ec_wp=True, tag="ec_wp")

parallel_simple(run_ronormalboot, machines)
