# Copyright 2015 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 = 'silberst, pstew, quiche'
NAME = 'network_WiFi_DisconnectReason.ap_send_chan_switch'
TIME = 'SHORT'
TEST_TYPE = 'Server'

ATTRIBUTES = ''
DEPENDENCIES = 'wificell'

DOC = """
This test reads (but does not verify) the reported DiconnectReason property
reported by supplicant when the AP sends a channel switch message.
"""


from autotest_lib.server import site_linux_system


def run(machine):
    host = hosts.create_host(machine)
    capabilities = [site_linux_system.LinuxSystem.CAPABILITY_SEND_MANAGEMENT_FRAME]
    job.run_test('network_WiFi_DisconnectReason',
                 host=host,
                 tag=NAME.split('.')[1],
                 disconnect_trigger='AP send channel switch',
                 req_caps=capabilities, raw_cmdline_args=args)


parallel_simple(run, machines)
