# 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_ch44_ht40_plus'
TIME = 'MEDIUM'
TEST_TYPE = 'Server'
SUITE = 'wifirvr'

DOC = """
This test takes rate vs. range measurement on for TCP downstream test
(AP -> DUT) using channel 44 (5220MHz), 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_PLUS]
    ap_config = hostap_config.HostapConfig(channel=44,
                                           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)
