# Copyright 2014 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_AudioBasicHDMI"
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.",
    "doc" : "Tests HDMI audio",
    'variant_category': '{"name": "Audio_Board"}',
}
ATTRIBUTES = "suite:audio_basic"
TEST_TYPE = "server"
DEPENDENCIES = 'chameleon_connection_types:CHAMELEON_CONNECTION_TYPE_HDMI, test_hdmiaudio, chameleon_state:WORKING'
JOB_RETRIES = 1

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_AudioBasicHDMI",
                 host=host,
                 skipped_model_with_bugs={
                    'kevin':'b/250681713',
                },)

parallel_simple(run, machines)
