# Copyright 2022 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_PerfNoisyEnv.vht80_gaussian_ch155'
METADATA = {
    'contacts': ['chromeos-wifi-champs@google.com'],
    # ChromeOS > Platform > Connectivity > WiFi
    'bug_component': 'b:893827',
    # Network: Open VHT80 802.11ac, Channel 155.
    'criteria': 'Measure the maximal receiving and transmitting throughput and point of disconnection on a DUT while broadcasting gaussian noise at multiple gain values',
    'hw_agnostic': False,
}
ATTRIBUTES = ''
MAX_RESULT_SIZE_KB = 512000
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)
    noise_file = 'gaussian_noise_sample_rate_8M_amplitude_1_signed_8bit.iq'
    frequency = 5785000000
    start_gain=37
    gain_increment=1
    noise_parameters = (noise_file, frequency, start_gain, gain_increment)
    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)
    use_iperf = True
    job.run_test('network_WiFi_PerfNoisyEnv', tag=NAME.split('.')[1],
                 host=host, raw_cmdline_args=args,
                 additional_params=(noise_parameters, ap_config, use_iperf))

parallel_simple(run, machines)
