# 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 = 'pstew, wiley, quiche'
NAME = 'network_WiFi_CSA'
TIME = 'SHORT'
TEST_TYPE = 'Server'
ATTRIBUTES = ('suite:wifi_matfunc, suite:wificell-cq')
DEPENDENCIES = 'wificell'

DOC = """
This test verifies that DUT will move off-channel if it is sent a
Spectrum Management action frame that contains a Channel Move
element.  Such frames are sent on a DFS network to vacate the
channel if radar is detected.
Note that not all clients support CSA, but they generally should at least try
to disconnect from the AP.
"""


from autotest_lib.server.cros.network import hostap_config


def run(machine):
    a_mode = hostap_config.HostapConfig.MODE_11A
    configurations = [
        (hostap_config.HostapConfig(
            channel=64, mode=a_mode, spectrum_mgmt_required=True), 36)]
    host = hosts.create_host(machine)
    job.run_test('network_WiFi_CSA',
                 host=host,
                 raw_cmdline_args=args,
                 additional_params=configurations)


parallel_simple(run, machines)
