# 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_ch155'
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 throughout.
    # Network: Open VHT80 802.11ac, Channel 115.
    '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=157,
                    mode=ac_mode,
                    n_capabilities=n_caps,
                    vht_channel_width=channel_width_80_mhz,
                    vht_center_channel=155,
                    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)
