# 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 = "stanleyw@google.com"
NAME = "network_WiFiInteropChaos"
TIME = "LENGTHY"
TEST_TYPE = "Server"

DOC = """
This test attempts to connect to all the ap's as as defined in the
configuration file wifi_interop_ap_list.conf
"""

from autotest_lib.server import packet_capture
from autotest_lib.server.cros.chaos_config import ChaosAPList

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

    ap_config = ChaosAPList()
    with packet_capture.PacketCaptureManager() as capturer:
        capturer.allocate_packet_capture_machine()
        for ap in ap_config:
            job.run_test("network_WiFiInteropChaos", host=host, ap=ap,
                         capturer=capturer, tries=10, tag=ap.get_bss())

parallel_simple(run, machines)
