# Copyright 2023 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_RebootChameleon.hdmiaudio"
METADATA = {
    "contacts": ["crosep-intertech@google.com"],
    "bug_component": "b:1280385",
    "criteria": "This test will trigger chameleon reboot.",
    "doc" : "Reboot chameleon per test bed type within the audio pool.",
    'variant_category': '{"name": "Audio_Board"}',
}

ATTRIBUTES = "suite:audio_advanced"
DEPENDENCIES = "test_hdmiaudio, chameleon_state:WORKING"
JOB_RETRIES = 0
TEST_TYPE = "server"

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_RebootChameleon", host=host, tag="hdmiaudio")

parallel_simple(run, machines)
