# Copyright 2018 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 = "jwerner"
NAME = "firmware_Bmpblk"
PURPOSE = "Check that the firmware screens have been correctly configured"
CRITERIA = "This test will fail if firmware screens have not been explicitly scaled for this device"
ATTRIBUTES = "suite:faft_bios, suite:faft_bios_ro_qual, suite:faft_bios_rw_qual, suite:faft_normal, suite:faft_lv4, suite:faft_bios_ec3po, suite:faft_bios_tot"
TIME = "SHORT"
TEST_CATEGORY = "Functional"
TEST_CLASS = "firmware"
TEST_TYPE = "server"
JOB_RETRIES = 4

DOC = """
This test checks whether the BIOS was built with a correctly configured bmpblk
to ensure crisp firmware screen images and text. The bmpblk for every device
needs to be explicitly configured for the device's screen resolution to ensure
optimal quality. Relies on flashrom and cbfstool to inspect the BIOS image.
"""

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_bmpblk(machine):
    host = hosts.create_host(machine, servo_args=servo_args)
    job.run_test('firmware_Bmpblk', host=host, cmdline_args=args)

parallel_simple(run_bmpblk, machines)
