# Copyright (c) 2013 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_FMap"
PURPOSE = "Check the existence of BIOS and EC FMap and the required FMap areas"
CRITERIA = "This test will fail if the required FMap areas not existed"
ATTRIBUTES = "suite:faft_bios, suite:faft_bios_ro_qual, suite:faft_bios_rw_qual, suite:faft_normal, suite:faft_lv1, suite:faft_bios_tot"
DEPENDENCIES = "servo_state:WORKING"
TIME = "SHORT"
TEST_CATEGORY = "Functional"
TEST_CLASS = "firmware"
TEST_TYPE = "server"
JOB_RETRIES = 0
PY_VERSION = 3

DOC = """
This test checks the active BIOS and EC firmware contains the required
FMap areas and verifies their hierarchies. It relies on flashrom to dump
the active BIOS and EC firmware and dump_fmap to decode them.
"""

from autotest_lib.client.common_lib import utils

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

def run_fmap(machine):
    host = hosts.create_host(machine, servo_args=servo_args)
    job.run_test('firmware_FMap', host=host, cmdline_args=args,
                 dev_mode=False, tag="normal")

parallel_simple(run_fmap, machines)
