# 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_AttenuatedPerf.vht40_ch060'
ATTRIBUTES = "suite:wifi_atten_perf"
TIME = 'SHORT'
TEST_TYPE = 'Server'
DEPENDENCIES = 'wificell'

DOC = """
This test uses netperf to measure the maximal receiving and transmitting
throughput on a DUT with an open VHT40 802.11ac network across multiple
attenuation levels.
"""


from autotest_lib.server.cros.network import hostap_config


def run(machine):
    host = hosts.create_host(machine)
    ap_config = hostap_config.HostapConfig(
            channel=60,
            mode=hostap_config.HostapConfig.MODE_11AC_PURE,
            n_capabilities=[hostap_config.HostapConfig.N_CAPABILITY_HT40],
            vht_channel_width=hostap_config.HostapConfig.VHT_CHANNEL_WIDTH_40)
    attenuation_increment = 6
    final_attenuation = 100
    job.run_test('network_WiFi_AttenuatedPerf',
                 tag=NAME.split('.')[1],
                 host=host,
                 raw_cmdline_args=args,
                 additional_params=(ap_config, attenuation_increment, final_attenuation))


parallel_simple(run, machines)
