# 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 = "mzhuo@chromium.org"
NAME = "enterprise_CFM_MimoCheck.meet_app"
TIME = "LONG"
TEST_CATEGORY = "Functional"
TEST_CLASS = "enterprise"
TEST_TYPE = "server"
ATTRIBUTES = ""
DEPENDENCIES = "mimo, atrus, huddly"
JOB_RETRIES = 3

DOC = """
This test consistens of 3 steps to that verify the MIMO is always availble to
the CFM. It verifies:
  1.) that the MIMO is available after a CFM reboot
  2.) that the MIMO is available after joining and leaving a meeting
  3.) that the MIMO is available after being power cycled from the USB level

 "Available" means that the MIMO is visible on the system/USB level.
"""

args_dict = utils.args_to_dict(args)

def run_test(machine):
    repetitions = int(args_dict.get('repetitions', 3))
    host = hosts.create_host(machine)
    job.run_test('enterprise_CFM_MimoCheck', host=host,
                 repetitions=repetitions, is_meeting=True, tag='meet_app')

parallel_simple(run_test, machines)
