# Copyright 2015 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_MediaBasicVerification.m4a"
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 = "test_audiojack, chameleon_state:WORKING"

"""
This test remotely tests audio quality over headphone.
"""

args_dict = utils.args_to_dict(args)
chameleon_args = hosts.CrosHost.get_chameleon_arguments(args_dict)
test_file = ('http://commondatastorage.googleapis.com/chromiumos-test-assets-'
             'public/audio_test/chameleon/Headphone/test_256_16.m4a')

def run(machine):
    host = hosts.create_host(machine, chameleon_args=chameleon_args)
    job.run_test("audio_MediaBasicVerification", host=host,
                 audio_test_file=test_file)

parallel_simple(run, machines)
