# Copyright (c) 2013 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 "
NAME = "network_nightly"
PURPOSE = "A simple example suite."

TIME = "SHORT"
TEST_CATEGORY = "Functional"
TEST_CLASS = "suite"
TEST_TYPE = "Server"

DOC = """
This dynamic suite runs a set of client-side networking tests.
These test connection manager and DHCP behavior.

@param build: The name of the image to test.
          Ex: x86-mario-release/R17-1412.33.0-a1-b29
@param board: The board to test on. Ex: x86-mario
@param pool: The pool of machines to utilize for scheduling. If pool=None
             board is used.
@param check_hosts: require appropriate live hosts to exist in the lab.
@param SKIP_IMAGE: (optional) If present and True, don't re-image devices.
@param file_bugs: If True your suite will file bugs on failures.
@param max_run_time: Amount of time each test shoud run in minutes.
"""

import common
from autotest_lib.server.cros import provision
from autotest_lib.server.cros.dynamic_suite import dynamic_suite

_BUG_TEMPLATE = {
    'labels': ['OS-Chrome', 'Type-Bug-Regression'],
    'components': ['OS>Systems>Network'],
    'owner': '',
    'status': 'Untriaged',
    'summary': None,
    'title': None,
    'cc': ['krisr@chromium.org', 'bmahadev@chromium.org',
           'tienchang@chromium.org']
}

args_dict['name'] = NAME
args_dict['max_runtime_mins'] = 20
args_dict['job'] = job
args_dict['add_experimental'] = True
args_dict['version_prefix'] = provision.CROS_VERSION_PREFIX
args_dict['bug_template'] = _BUG_TEMPLATE

dynamic_suite.reimage_and_run(**args_dict)
