# Copyright 2016 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 = "audio_LeftRightInternalSpeaker.browser"
METADATA = {
    "contacts": ["chromeos-audio-bugs@google.com"],
    "bug_component": "b:875558",
    "criteria": "This test will fail if the captured audio does not match original file."
}
TEST_TYPE = "server"
#ATTRIBUTES = "suite:chameleon_audio_unstable"
DEPENDENCIES = "audio_box, chameleon_state:WORKING"
JOB_RETRIES = 1

"""
This test remotely tests internal speaker audio function by playing
sounds to left and right channels separately. It can't detect if the
channel/speaker pairing is incorrect, but it can detect when a certain
channel is not played at all.
"""

args_dict = utils.args_to_dict(args)
chameleon_args = hosts.CrosHost.get_chameleon_arguments(args_dict)

def run(machine):
    host = hosts.create_host(machine, chameleon_args=chameleon_args)
    job.run_test("audio_LeftRightInternalSpeaker", host=host, player='browser')

parallel_simple(run, machines)
