# 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 = "network_WiFiSimpleConnectionServer"
TIME = "LONG"
TEST_CATEGORY = "Functional"
TEST_CLASS = "network"
TEST_TYPE = "server"

DOC = """
This script iterates through all of the access points in the AP compatibility
lab has a chrome device connect to each in series.  This test must be performed
in the AP compatibility lab.
"""

from autotest_lib.server import packet_capture

def wifi_ssid_compat(machine):
    host = hosts.create_host(machine)

    with packet_capture.PacketCaptureManager() as capturer:
        capturer.allocate_packet_capture_machine()
        job.run_test('network_WiFiSimpleConnectionServer', host=host, tries=10,
                     capturer=capturer, disable_sysinfo=True)

parallel_simple(wifi_ssid_compat, machines)
