# 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.30min"
PURPOSE = "Collect power consumption during hibernate."
TIME = "LONG"
TEST_CATEGORY = "Performance"
TEST_CLASS = "firmware"
TEST_TYPE = "server"
ATTRIBUTES = "suite:powerplay"
DEPENDENCIES = "servo, 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 = 1800
    host = hosts.create_host(machine, servo_args=servo_args)
    job.run_test('firmware_StandbyPowerConsumption', host=host,
                 hibernate_length=hibernate_length, cmdline_args=args,
                 tag='30min')

parallel_simple(run, machines)
