# 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 = "faft_normal"
PURPOSE = "Test hard-to-automate 'normal' mode firmware scenarios."
CRITERIA = "All tests with SUITE=faft_normal must pass."

TIME = "SHORT"
TEST_CATEGORY = "General"
TEST_CLASS = "suite"
TEST_TYPE = "Server"

DOC = """

This is a faft (FULLY AUTOMATED FIRMWARE TEST) suite. The tests in this suite
operate on the DUT in 'normal' mode, where verified boot is fully enforced.
The tests verfiy that valid boot scenarios progress properly (with state
progress checks) and that error scenarios (corrupted blobs) are caught as
expected. Some of these test failures should close the tree as they may imply
that the system is unbootable and further tests will only become hung or
blocked. Other tests verify all of the features (some of them security
related) are functioning.

@param build: The name of the image to test.
              Ex: x86-mario-release/R17-1412.33.0-a1-b29
@param board: The board to test on.  Ex: x86-mario
@param pool: The pool of machines to utilize for scheduling. If pool=None
             board is used.
@param check_hosts: require appropriate live hosts to exist in the lab.
@param SKIP_IMAGE: (optional) If present and True, don't re-image devices.
"""

import common
from autotest_lib.server.cros.dynamic_suite import dynamic_suite

dynamic_suite.reimage_and_run(
    build=build, board=board, name='faft_normal', job=job,
    pool=pool, check_hosts=check_hosts, add_experimental=True, num=num,
    file_bugs=file_bugs, skip_reimage=dynamic_suite.skip_reimage(globals()))
