# 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_RoamSuspendTimeout.wpa'
TIME = 'SHORT'
TEST_TYPE = 'Server'
ATTRIBUTES = "suite:wifi_flaky"
DEPENDENCIES = 'wificell'

DOC = """
This tests verifies that we can reconnect to an AP broadcasting a WPA network
using TKIP after deauthentication while the DUT is suspended.  TKIP is
deprecated for having some security holes, and WPA is deprecated in favor of
WPA2, but routers of a certain age only support this mode.
"""

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


def run(machine):
    wpa_config = xmlrpc_security_types.WPAConfig(
            psk='chromeos',
            wpa_mode=xmlrpc_security_types.WPAConfig.MODE_PURE_WPA,
            wpa_ciphers=[xmlrpc_security_types.WPAConfig.CIPHER_TKIP])
    job.run_test('network_WiFi_RoamSuspendTimeout',
                 tag=NAME.split('.')[1],
                 host=hosts.create_host(machine),
                 raw_cmdline_args=args,
                 additional_params=hostap_config.HostapConfig(
                         frequency=2412,
                         mode=hostap_config.HostapConfig.MODE_11G,
                         security_config=wpa_config))


parallel_simple(run, machines)
