# Copyright (c) 2017 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_CorruptRecoveryCache.dev"
PURPOSE = "Servo based RECOVERY_MRC_CACHE corruption test"
CRITERIA = "This test will fail if the cache doesn't retrain and boot into recovery"
ATTRIBUTES = "suite:faft_bios, suite:faft_bios_ro_qual, suite:faft_lv3"
DEPENDENCIES = "servo_state:WORKING"
TIME = "SHORT"
TEST_CATEGORY = "Functional"
TEST_CLASS = "firmware"
TEST_TYPE = "server"
JOB_RETRIES = 1

DOC = """
This test corrupts RECOVERY_MRC_CACHE and makes sure the DUT recreates the
cache and boots into recovery. This only applies to intel chips.

The expected behavior is that if the RECOVERY_MRC_CACHE is corrupted then
it will be recreated and still boot into recovery mode.
"""

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

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

parallel_simple(run_corruptrecoverycache, machines)
