# Copyright 2017 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 = "firmware_Cr50DeepSleepStress"
METADATA = {
        "contacts": ["chromeos-faft@google.com", "mruthven@chromium.org"],
        "bug_component": "b:792402", # ChromeOS > Platform > Enablement > Firmware > FAFT
        "criteria": "Verify deep sleep"
}
ATTRIBUTES = "suite:faft_gsc_nightly, suite:faft_cr50_pvt, suite:faft_cr50_prepvt"
TIME = "LONG"
TEST_TYPE = "server"
DEPENDENCIES = "servo_state:WORKING"

DOC = """
Cr50 should enter deep sleep every time the system goes into S3. Run
power_SuspendStress and verify the deep sleep count matches the number of
suspend iterations.
"""

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

def run(machine):
    host = hosts.create_host(machine, servo_args=servo_args)

    basic = args_dict.get("basic", "").lower() == "true"
    default_count = 10 if basic else 20
    suspend_count = int(args_dict.get("suspend_count", default_count))
    fwmp = args_dict.get("fwmp", "")
    reset_type = args_dict.get("reset_type", "mem")

    job.run_test("firmware_Cr50DeepSleepStress", host=host, cmdline_args=args,
                 suspend_count=suspend_count, reset_type=reset_type, fwmp=fwmp)

parallel_simple(run, machines)
