# Copyright (c) 2011 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 = "firmware_CorruptFwBodyB"
PURPOSE = "Servo based firmware B body corruption test"
CRITERIA = "This test will fail if firmware verification mis-behaved"
SUITE = "faft,faft_dev,faft_lv3"
TIME = "LONG"
TEST_CATEGORY = "Functional"
TEST_CLASS = "firmware"
TEST_TYPE = "server"

DOC = """
This test corrupts firmware body B and checks the next boot results.

The expected behavior is different if the firmware preamble USE_RO_NORMAL
flag is enabled. In the case USE_RO_NORMAL ON, the firmware corruption
doesn't hurt the boot results since it boots the RO path directly and does
not load and verify the RW firmware body. In the case USE_RO_NORMAL OFF,
the RW firwmare B corruption will result booting the firmware A.
"""

def run_corruptfwbodyb(machine):
    host = hosts.create_host(machine)
    job.run_test("firmware_CorruptFwBodyB", host=host, cmdline_args=args,
                 use_faft=True, disable_sysinfo=True,
                 dev_mode=True, tag="dev")

parallel_simple(run_corruptfwbodyb, machines)
