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

AUTHOR = "Chrome OS Team"
NAME = "firmware_RollbackKernel"
PURPOSE = "Servo based kernel rollback test."
CRITERIA = "This test will fail if kernel rollback doesn't fail verification."
SUITE = "faft,faft_normal,faft_lv3"
TIME = "LONG"
TEST_CATEGORY = "Functional"
TEST_CLASS = "firmware"
TEST_TYPE = "server"

DOC = """
This test requires a USB disk plugged-in, which contains a Chrome OS test
image (built by "build_image --test"). In normal mode, this test rollbacks
kernel A and results kernel B boot. It then rollbacks kernel B and
results recovery boot. In developer mode, the firmware ignores kernel
rollback check so it remains unchanged.
"""

def run_rollbackkernel(machine):
    host = hosts.create_host(machine)
    job.run_test("firmware_RollbackKernel", host=host, cmdline_args=args,
                 use_faft=True, disable_sysinfo=True,
                 dev_mode=False, tag="normal")

parallel_simple(run_rollbackkernel, machines)
