# 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.switch_ap'
TIME = 'SHORT'
TEST_TYPE = 'Server'
ATTRIBUTES = ('suite:wifi_matfunc')
DEPENDENCIES = 'wificell'

DOC = """
This test reads (but does not verify) the reported DiconnectReason property
reported by supplicant when the client switches from one AP to another AP.
"""


from autotest_lib.server import site_linux_system


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


parallel_simple(run, machines)
