# 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.cros.cfm.configurable_test.dsl import *
from autotest_lib.server import utils

AUTHOR = "kerl@google.com, chromeos-meetings@google.com"
NAME = "enterprise_CFM_ConfigurableCfmTestSanity.join_leave"
PURPOSE = "Verifies the configurable CfM test infra with a simple scenario"
CRITERIA = "No errors occur"
ATTRIBUTES = "suite:hotrod-remora, suite:bluestreak-pre-cq"
TIME = "SHORT"
TEST_CATEGORY = "Functional"
TEST_TYPE = "server"

DOC = """
Verifies that we can specify and run a configurable cfm test.
"""

cfm_test = CfmTest(
    scenario=Scenario(
        RebootDut(restart_chrome_for_cfm=True),
        CreateMeeting(),
        RepeatTimes(5, Scenario(
            MuteMicrophone(),
            UnmuteMicrophone()
        )),
        LeaveMeeting()
    ),
    configuration=Configuration(
        run_test_only = False
    )
)

def run_test(machine):
    job.run_test("enterprise_CFM_ConfigurableCfmTestSanity",
                 cfm_test = cfm_test,
                 tag = 'join_leave',
                 host = hosts.create_host(machine))

parallel_simple(run_test, machines)
