# Copyright 2014 The ChromiumOS Authors
# Use of this source code is governed by a BSD-style license that can be
# found in the LICENSE file.

NAME = 'network_WiFi_AttenuatedPerf.vht80_ch042'
METADATA = {
    'contacts': ['chromeos-wifi-champs@google.com'],
    'requirements': ['wifi-gen-0002-v01', 'wifi-proc-0009-v01', 'wifi-proc-0012-v01', 'wifi-proc-0013-v01', 'wifi-proc-0016-v01', 'wifi-proc-0020-v01'],
    # ChromeOS > Platform > Connectivity > WiFi
    'bug_component': 'b:893827',
    # netperf is used for measuring the throughput.
    # Network: Open VHT80 802.11ac, Channel 42.
    'criteria': 'Measure the maximal receiving and transmitting throughput on a DUT across multiple attenuation levels',
    'hw_agnostic': False,
}
ATTRIBUTES = "suite:wifi_atten_perf"
TEST_TYPE = 'Server'
DEPENDENCIES = 'wificell, peripheral_wifi_state:WORKING'

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,
               hostap_config.HostapConfig.AC_CAPABILITY_MAX_A_MPDU_LEN_EXP7]
    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=44,
                    mode=ac_mode,
                    n_capabilities=n_caps,
                    vht_channel_width=channel_width_80_mhz,
                    vht_center_channel=42,
                    ac_capabilities=ac_caps,
                    spectrum_mgmt_required=True)
    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)
