# 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 = "denniswu@chromium.org"
NAME = "enterprise_CFM_MeetAppSanity.partners"
TIME = "SHORT"
TEST_CATEGORY = "Functional"
TEST_CLASS = "enterprise"
TEST_TYPE = "server"
ATTRIBUTES = "suite:bluestreak-partners"
JOB_RETRIES = 3

DOC = """
This test clears the TPM if necessary, enrolls the device into CFM and runs a
series of confidence test actions in the meet app.
It clears the TPM at the end of the test run. Every time the TPM is cleared,
the system is rebooted.
This test bypasses servo check and is used by third party vendor PAL Acoustics.
"""

args_dict = utils.args_to_dict(args)


def run_test(machine):
    host = hosts.create_host(machine, servo_args=None)
    job.run_test('enterprise_CFM_MeetAppSanity', host=host, tag='partners')


parallel_simple(run_test, machines)
