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

DOC = """
This test case verifies that the DUT can reconnect to an AP using
WEP open system authentication after deauthentication while the DUT is
suspended.
"""


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):
    # FYI: D-Bus requires string parameters must be valid UTF-8.
    wep_keys = ['abcde',
                'fghij',
                'klmno',
                'pqrst']
    wep_config = xmlrpc_security_types.WEPConfig(
            wep_keys,
            wep_default_key=2,
            auth_algorithm=xmlrpc_security_types.WEPConfig.AUTH_ALGORITHM_OPEN)
    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=2437,
                         mode=hostap_config.HostapConfig.MODE_11G,
                         security_config=wep_config))


parallel_simple(run, machines)
