# 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 = "tgao@chromium.org"
NAME = "network_WiFiChaosOpen"
TIME = "LONG"
TEST_CATEGORY = "Functional"
TEST_CLASS = "network"
TEST_TYPE = "server"

DOC = """
This script iterates through user-specified 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.cros.chaos_lib import chaos_interop_test


def run_chaos_open(machine):
    host = hosts.create_host(machine)
    # List of specific APs to debug.
    debug_aps = ['chromeos3-row2-rack1-host2', 'chromeos3-row2-rack1-host3']
    helper = chaos_interop_test.WifiChaosTest('network_WiFiChaosOpen', host)
    helper.run(job, ap_spec={'hostnames': debug_aps}, batch_size=2, tries=1)


parallel_simple(run_chaos_open, machines)
