# Copyright 2014 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_SimpleConnect.wifi_checkTruncatedBeacon'
TIME = 'SHORT'
TEST_TYPE = 'Server'
ATTRIBUTES = ('suite:wifi_correctness_cros_core, suite:wifi_matfunc,'
              'suite:wifi_matfunc_noservo,'
              'suite:wifi_matfunc_bcm4371, suite:wifi_release, subsystem:wifi,'
              'suite:android_wifi_connect')
DEPENDENCIES = 'wificell'

DOC = """
This test attempts to verify that we can connect to a router that sends
corrupted beacons.  In this particular case, the beacon data is truncated.
"""


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


def run(machine):
    b_mode = hostap_config.HostapConfig.MODE_11B
    # This is an incomplete vendor-specific beacon IE (one byte short).
    beacon_footer = '\xdd\x0b\0\x1a\x11\x01\0\0\0\0\0\0'
    configurations = [(hostap_config.HostapConfig(channel=1, mode=b_mode,
                                                  beacon_footer=beacon_footer),
                       xmlrpc_datatypes.AssociationParameters())]
    host = hosts.create_host(machine)
    job.run_test('network_WiFi_SimpleConnect',
                 tag=NAME.split('.')[1],
                 host=host,
                 raw_cmdline_args=args,
                 additional_params=configurations)


parallel_simple(run, machines)
