# 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_RecoveryCacheBootKeys"
PURPOSE = "Servo based RECOVERY_MRC_CACHE boot tests"
CRITERIA = "This test will fail if the DUT doesn't use the cache during recovery boot."
ATTRIBUTES = "suite:faft_lv6"
TIME = "SHORT"
TEST_CATEGORY = "Functional"
TEST_CLASS = "firmware"
TEST_TYPE = "server"
JOB_RETRIES = 1

DOC = """
This test ensures that when booting to recovery mode the device will use the
cache instead training memory every boot.
"""

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

def run_rec_boot_use_cache(machine):
    host = hosts.create_host(machine, servo_args=servo_args)
    job.run_test("firmware_RecoveryCacheBootKeys", host=host, cmdline_args=args,
                 disable_sysinfo=True, dev_mode=False, tag="normal")

parallel_simple(run_rec_boot_use_cache, machines)
