# 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_BgscanBackoff.wifi_bgscan_backoff'
TIME = 'SHORT'
TEST_TYPE = 'Server'
ATTRIBUTES = ('suite:wifi_matfunc')
DEPENDENCIES = 'wificell'
MAX_RESULT_SIZE_KB = 512000

DOC = """
This test case verifies that bgscan aborts and/or backs off when
there is consistent outgoing traffic.
"""

from autotest_lib.server.cros.network import hostap_config

def run(machine):
    host = hosts.create_host(machine)
    mode = hostap_config.HostapConfig.MODE_11N_MIXED
    config_first_ap = (hostap_config.HostapConfig(channel=1, mode=mode))
    config_second_ap = (hostap_config.HostapConfig(channel=36, mode=mode))
    params = [config_first_ap, config_second_ap]
    job.run_test('network_WiFi_BgscanBackoff',
                 host=host,
                 raw_cmdline_args=args,
                 additional_params=params)

parallel_simple(run, machines)
