# 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"
# TODO(https://crbug.com/887848): Disabled since it is constantly failing.
# ATTRIBUTES = "suite:hotrod"
DEPENDENCIES = "meet_app, huddly, mimo"
JOB_RETRIES = 3

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

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)
    job.run_test('enterprise_CFM_AutoZoomSanity', host=host,
                 session_length=100, peripheral_dict=peripheral_dict)

parallel_simple(run_test, machines)
