# 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 = "Chrome OS Team"
NAME = "firmware_StandbyPowerConsumption.4hr"
PURPOSE = "Collect power consumption during hibernate."
TIME = "LONG"
TEST_CATEGORY = "Performance"
TEST_CLASS = "firmware"
TEST_TYPE = "server"
ATTRIBUTES = "suite:powerplay"
DEPENDENCIES = "servo_state:WORKING, powerplay"

DOC = """
This test collects and reports the power consumtion data during hibernate state.
"""

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

def run(machine):
    hibernate_length = 14400
    host = hosts.create_host(machine, servo_args=servo_args)
    job.run_test('firmware_StandbyPowerConsumption', host=host,
                 hibernate_length=hibernate_length, cmdline_args=args,
                 tag='4hr')

parallel_simple(run, machines)
