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

from autotest_lib.server import utils

AUTHOR = "Chrome OS Team"
NAME = "firmware_CorruptKernelB.dev"
PURPOSE = "Servo based kernel B corruption test"
CRITERIA = "This test will fail if kernel verification mis-behaved"
ATTRIBUTES = "suite:faft_bios, suite:faft_bios_ro_qual, suite:faft_bios_rw_qual, suite:faft_dev, suite:faft_lv3, suite:faft_bios_tot"
DEPENDENCIES = "servo_state:WORKING"
TIME = "SHORT"
TEST_CATEGORY = "Functional"
TEST_CLASS = "firmware"
TEST_TYPE = "server"
PY_VERSION = 3

DOC = """
This test sets kernel B boot and then corrupts kernel B. The firmware
verifies kernel B failed so falls back to kernel A boot. This test will
fail if kernel verification mis-behaved.
"""

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

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

parallel_simple(run_corruptkernelb, machines)
