# Copyright 2016 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_HotPlugAtSuspend.suspend_only"
METADATA = {
    "contacts": ["chromeos-gfx-display@google.com"],
    "bug_component": "b:188154",
    "criteria": "Fails if the checks after suspend-resume fail."
}
ATTRIBUTES = "suite:chameleon_hdmi_unstable"
TEST_TYPE = "server"
DEPENDENCIES = "chameleon"
JOB_RETRIES = 1

'''
This is a control group of only doing suspend/resume without display hot-plug.
'''

args_dict = utils.args_to_dict(args)
chameleon_args = hosts.CrosHost.get_chameleon_arguments(args_dict)
# Plug status before and after suspend/resume
# [(plugged_before_suspend, plugged_after_suspend, plugged_before_resume)]
plug_status=[(False, False, False)]

def run(machine):
    host = hosts.create_host(machine, chameleon_args=chameleon_args)
    job.run_test("display_HotPlugAtSuspend", host=host,
                 plug_status=plug_status, tag="suspend_only")

parallel_simple(run, machines)
