# Copyright 2014 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 = 'arowa'
NAME = 'network_WiFi_AttenuatedPerf.vht80_ch155'
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 VHT80 802.11ac network across multiple
attenuation levels.
"""


from autotest_lib.server.cros.network import hostap_config


def run(machine):
    host = hosts.create_host(machine)
    n_caps = [hostap_config.HostapConfig.N_CAPABILITY_HT40_PLUS]
    ac_caps = [hostap_config.HostapConfig.AC_CAPABILITY_SHORT_GI_80]
    ac_mode = hostap_config.HostapConfig.MODE_11AC_PURE
    channel_width_80_mhz = hostap_config.HostapConfig.VHT_CHANNEL_WIDTH_80
    ap_config = hostap_config.HostapConfig(
                    channel=157,
                    mode=ac_mode,
                    n_capabilities=n_caps,
                    vht_channel_width=channel_width_80_mhz,
                    vht_center_channel=155,
                    ac_capabilities=ac_caps)
    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)
