# Copyright 2015 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 = 'angli, sbasi'
NAME = 'android_ACTS'
TIME = 'MEDIUM'
TEST_TYPE = 'Server'

DOC = """
This test runs ACTS against a inputed config_file, test_bed, test_case.
"""

args_dict = utils.args_to_dict(args)
config_file = args_dict.get('config_file')
test_bed = args_dict.get('test_bed')
test_case = args_dict.get('test_case')
test_file = args_dict.get('test_file')

def run(machine):
    job.run_test('android_ACTS', testbed=hosts.create_testbed(machine),
                 config_file=config_file, testbed_name=test_bed,
                 test_case=test_case, test_file=test_file)


parallel_simple(run, machines)
