# Copyright (c) 2010 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 = "Paul Stewart <pstew@google.com>"
TIME = "SHORT"
NAME = "network_WiFiManager"
TEST_CATEGORY = "Stress"
TEST_CLASS = "network"
TEST_TYPE = "Server"
SUITE = "wifi_matfunc"
SYNC_COUNT = 1
DEPENDENCIES = "wificell"
DOC = """
WiFiManager is a suite of 3-machine tests to validate basic WiFi functionality.
One client, one server, and one programmable WiFi AP/Router are required
(either off-the-shelf with a network-accesible CLI or a Linux/BSD system
with a WiFi card that supports HostAP functionality).

Configuration information to run_test:

server     - the IP address of the server (automatically filled in)
client     - the IP address of the client (automatically filled in)
router     - the IP address of the WiFi AP/Router and the names of the
             wifi and wired devices to configure
"""

from autotest_lib.server import site_wifitest


def run_server_tests(machine):
  site_wifitest.run_test_dir("network_WiFiManager", job, args, machine)


parallel_simple(run_server_tests, machines)
