# 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 = 'tgao@chromium.com'
NAME = 'network_WiFi_RateRange.tcp_rx_ch153_ht40_minus'
TIME = 'MEDIUM'
TEST_TYPE = 'Server'
SUITE = 'wifirvr'

DOC = """
This test takes rate vs. range measurement on for TCP downstream test
(AP -> DUT) using channel 153 (5765MHz), HT40-.
"""


from autotest_lib.server.cros.network import hostap_config
from autotest_lib.server.cros.network import iperf_config


def run(machine):
    # AP config params.
    n_mode = hostap_config.HostapConfig.MODE_11N_PURE
    caps = [hostap_config.HostapConfig.N_CAPABILITY_GREENFIELD,
            hostap_config.HostapConfig.N_CAPABILITY_HT40_MINUS]
    ap_config = hostap_config.HostapConfig(channel=153,
                                           mode=n_mode,
                                           n_capabilities=caps)

    iperf_config_obj = iperf_config.IperfConfig(
            protocol=iperf_config.IperfConfig.PROTOCOL_TCP,
            is_downstream=True,
            test_time=60)

    additional_params = (ap_config, iperf_config_obj)

    host = hosts.create_host(machine)
    job.run_test('network_WiFi_RateRange',
                 tag=NAME.split('.')[1],
                 host=host,
                 raw_cmdline_args=args,
                 additional_params=additional_params)


parallel_simple(run, machines)
