# Copyright 2015 The ChromiumOS Authors
# 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

NAME = "display_Resolution.4K.extended"
METADATA = {
    "contacts": ["chromeos-gfx-display@google.com"],
    "bug_component": "b:188154",
    "criteria": "Fails if the captured display checksum mismatches."
}
ATTRIBUTES = "suite:chameleon_hdmi_unstable"
TEST_TYPE = "server"
DEPENDENCIES = "chameleon, 4k_resolution"

'''
This test remotely tests display resolution functions.
'''

args_dict = utils.args_to_dict(args)
chameleon_args = hosts.CrosHost.get_chameleon_arguments(args_dict)

def run(machine):
    resolution_list=[('EDIDv2', 3840, 2160)]
    host = hosts.create_host(machine, chameleon_args=chameleon_args)
    job.run_test("display_Resolution", host=host,
                 resolution_list=resolution_list, tag="4K.extended")

parallel_simple(run, machines)
