# 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_Perf.vht20'
ATTRIBUTES = 'suite:wifi_perf'
TIME = 'SHORT'
MAX_RESULT_SIZE_KB = 512000
TEST_TYPE = 'Server'
DEPENDENCIES = 'wificell'

DOC = """
This test uses netperf to measure and verify the maximal receiving and
transmitting throughput on a DUT with an open HT20 802.11n network.
"""


from autotest_lib.server.cros.network import hostap_config


def run(machine):
    host = hosts.create_host(machine)
    configs = [hostap_config.HostapConfig(
                        channel=36,
                        mode=hostap_config.HostapConfig.MODE_11AC_PURE,
                        n_capabilities=[hostap_config.HostapConfig.N_CAPABILITY_HT20],
                        ac_capabilities=[hostap_config.HostapConfig.AC_CAPABILITY_MAX_A_MPDU_LEN_EXP7],
                        vht_channel_width=hostap_config.HostapConfig.VHT_CHANNEL_WIDTH_20)]
    use_iperf = True
    job.run_test('network_WiFi_Perf', tag=NAME.split('.')[1],
                 host=host, raw_cmdline_args=args,
                 additional_params=(configs, use_iperf))


parallel_simple(run, machines)
