# 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 = "MEDIUM"
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.
"""

def wifi_ssid_compat(machine):
    host = hosts.create_host(machine)
    job.run_test('network_WiFiSimpleConnectionServer', host=host, iterations=1,
                 disable_sysinfo=True)

parallel_simple(wifi_ssid_compat, machines)
