# Copyright 2020 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 = "puthik"
NAME = "power_MeetCall.16bot"
PURPOSE = "Use bond api to create meet bot and test hangout meet."
TIME = "SHORT"
TEST_CATEGORY = "Functional"
TEST_CLASS = "power"
TEST_TYPE = "server"

DOC = """
This test uses bond api to create meet bot and test hangout meet.

To run the test manually, install the cred from https://crbug.com/874835#c3 to
/creds/service_accounts/bond_service_account.json
"""

from autotest_lib.client.common_lib import utils

args_dict = utils.args_to_dict(args)
args = {
    'pdash_note': args_dict.get('pdash_note', ''),
    'tag' : NAME.split('.')[1],
    'num_bots' : 16,
}

def run(machine):
    host = hosts.create_host(machine)
    job.run_test("power_MeetCall", host=host, args=args)

parallel_simple(run, machines)
