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

from autotest_lib.server import utils

NAME = 'audio_AudioPinnedStream.playback'
METADATA = {
    "contacts": ["chromeos-audio-bugs@google.com"],
    "bug_component": "b:875558",
    "criteria": "This test will fail if pinned stream playback doesn't work as expected.",
    "doc" : "This test remotely tests pinned stream function."
}
TEST_TYPE = 'server'
#ATTRIBUTES = "suite:audio_advanced"
DEPENDENCIES = "test_audiojack, test_usbaudio, chameleon_state:WORKING"

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_AudioPinnedStream", host=host, playback=True)

parallel_simple(run, machines)
