# Copyright 2019 The ChromiumOS Authors
# Use of this source code is governed by a BSD-style license that can be
# found in the LICENSE file.

# This test case verifies that the Bluetooth chip of the DUT does
# not consume power more than specified during system suspension.
#
# This autotest include the following test cases:
#      self.test_case_suspend_power_measurement()
#
# Purpose: Test power consumption of Bluetooth chip during system suspension.

# Deprecated variables:
#     TIME = 'LONG'   # Takes about 60 mins
#     TEST_CATEGORY = 'Functional'

from autotest_lib.server import utils

NAME = 'bluetooth_AdapterPowerMeasure.suspension_100'
METADATA = {
    'contacts': ['chromeos-bt-team@google.com'],
    # ChromeOS > Platform > Connectivity > Bluetooth
    'bug_component': 'b:167317',
    'criteria': 'Bluetooth chip should consume power less than specified.',
    'hw_agnostic': False,
}



ATTRIBUTES = ''
TEST_TYPE = 'server'
DEPENDENCIES = 'bluetooth_state:NORMAL, working_bluetooth_btpeer:1, servo'


args_dict = utils.args_to_dict(args)

def run(machine):
    host = hosts.create_host(machine)
    job.run_test('bluetooth_AdapterPowerMeasure', host=host, max_power_mw=4,
                 num_iterations=100, args_dict=args_dict)

parallel_simple(run, machines)
