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

DOC = """
This test attempts to verify that we can roam between two APs in full
view of the DUT.
"""


from autotest_lib.client.common_lib.cros.network import xmlrpc_datatypes
from autotest_lib.server.cros.network import hostap_config


def run(machine):
    configuration = (hostap_config.HostapConfig(channel=1),
                     hostap_config.HostapConfig(
                             channel=48,
                             mode=hostap_config.HostapConfig.MODE_11A),
                     xmlrpc_datatypes.AssociationParameters())
    host = hosts.create_host(machine)
    job.run_test('network_WiFi_Roam',
                 tag=NAME.split('.')[1],
                 host=host,
                 raw_cmdline_args=args,
                 additional_params=configuration)


parallel_simple(run, machines)
