# Copyright 2016 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 = "chromeos-chameleon"
NAME = "display_HotPlugAtSuspend.suspend_only"
PURPOSE = "Control group of only doing suspend/resume."
CRITERIA = "This test will fail if DUT doesn't suspend/resume on time."
ATTRIBUTES = "suite:chameleon_dp, suite:chameleon_dp_hdmi, suite:chameleon_hdmi, suite:chameleon_hdmi_nightly"
TIME = "SHORT"
TEST_CATEGORY = "Functional"
TEST_CLASS = "display"
TEST_TYPE = "server"
DEPENDENCIES = 'chameleon'
JOB_RETRIES = 2

DOC = """
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)
