# 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 in chroot
- Ran the following command in chroot to install rsa to python2
  sudo cp -r /usr/lib64/python{3.6,2.7}/site-packages/rsa
"""

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)
