# Copyright 2017 The Chromium OS Authors. All rights reserved.
# 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

AUTHOR = "harpreet@chromium.org"
NAME = "enterprise_CFM_AutoZoomSanity"
TIME = "SHORT"
TEST_CATEGORY = "Functional"
TEST_CLASS = "enterprise"
TEST_TYPE = "server"
ATTRIBUTES = "suite:bluestreak, suite:bluestreak-release"
DEPENDENCIES = "huddly, mimo"
JOB_RETRIES = 3

DOC = """
Sanity test for AutoZoom feature available with Huddly and Mimo on bluestreak.
"""

args_dict = utils.args_to_dict(args)
servo_args = hosts.CrosHost.get_servo_arguments(args_dict)

def run_test(machine):
    peripheral_dict = {'Huddly GO': '2bd9:0011',
                       'Hangouts Meet speakermic': '18d1:8001',
                       'MIMO VUE HD': '17e9:016b'}
    host = hosts.create_host(machine, servo_args=servo_args)
    job.run_test('enterprise_CFM_AutoZoomSanity', host=host,
                 session_length=100, peripheral_dict=peripheral_dict)

parallel_simple(run_test, machines)
