# Copyright (c) 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 = 'quiche, wiley, pstew'
NAME = 'network_WiFi_VisibleScan.11b'
TIME = 'SHORT'
TEST_TYPE = 'Server'
ATTRIBUTES = ('suite:wifi_matfunc')
DEPENDENCIES = 'wificell'

DOC = """
This test scans for networks, with a shill profile that does not
contain any hidden networks. The test verifies that 802.11 probe
frames are seen over-the-air, and that the probe frames specify
a broadcast scan.

"""

from autotest_lib.server.cros.network import hostap_config


def run(machine):
    host = hosts.create_host(machine)
    # This configuration uses as many defaults as possible
    configurations = [hostap_config.HostapConfig(channel=1,
            mode=hostap_config.HostapConfig.MODE_11B)]
    job.run_test('network_WiFi_VisibleScan',
                 tag=NAME.split('.')[1],
                 host=host,
                 raw_cmdline_args=args,
                 additional_params=configurations)


parallel_simple(run, machines)
