# Copyright 2017 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.

AUTHOR = 'ajanti'
NAME = 'android_ACTS.BluetoothPowerTest_LDAC_HI_RES_MUSIC'
TIME = 'LONG'
TEST_TYPE = 'Server'
ATTRIBUTES = 'suite:android_bluetooth_power'
DEPENDENCIES = 'bluetooth_power,sony_relay'

DOC = """
This test runs power tests for LDAC codec with Hi Res music file
against a Bluetooth Power Test Beds.

"""
import common
from autotest_lib.server import utils


def run(machine):
    job.run_test('android_ACTS',
                 testbed=hosts.create_testbed(machine),
                 config_file='android1758-power-test-station-codecs.config',
                 test_tracker_project_id=11404,
                 testtracker_owner='android-comms-tvc@google.com',
                 test_file='bt_power_test_ldac_hi_res_music',
                 additional_apks=[{'apk':'PMC.apk', 'package':'com.android.pmc', 'artifacts':'tests.zip'}],
                 additional_configs=['android1758-power-test-station-codecs-relay-station-2.config',
                                     'android1758-power-test-station-codecs-relay-station-3.config',
                                     'android1758-power-test-station-codecs-relay-station-5.config',
                                     'android1758-power-test-station-codecs-relay-station-6.config',
                                     'bt_music/Stereo-44kHz-16bits.wav',
                                     'bt_music/Stereo-96kHz-24bits.wav'],
                 acts_timeout=86400)


parallel_simple(run, machines)
