# Copyright (c) 2012 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.

AUTHOR = "Chrome OS Team"
NAME = "Enterprise"
TIME = "LONG"
TEST_CATEGORY = "Functional"
TEST_CLASS = "suite"
TEST_TYPE = "server"
SUITE = "enterprise"

DOC = """This test suite runs the PyAuto functional CHROMEOS_POLICY suite.
"""


# Produces gtest-style output
CLIENT_GTESTS = [
    ('desktopui_PyAutoFunctionalTests', {
        'suite': 'CHROMEOS_POLICY',
        'auto_login': False,
        'tag': 'CHROMEOS_POLICY',
    }),
]


def run_client_test(machine):
    client = hosts.create_host(machine)
    client_at = autotest.Autotest(client)
    for test in CLIENT_GTESTS:
        gtest_runner.run(test, machine)


job.parallel_on_machines(run_client_test, machines)
