# 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.ht40_gaussian_ch011'
METADATA = {
    'contacts': ['chromeos-wifi-champs@google.com'],
    # ChromeOS > Platform > Connectivity > WiFi
    'bug_component': 'b:893827',
    # Network: Open HT40 802.11n, Channel 11.
    '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 = 2462000000
    start_gain=0
    gain_increment=1
    noise_parameters = (noise_file, frequency, start_gain, gain_increment)
    caps = [hostap_config.HostapConfig.N_CAPABILITY_HT40]
    mode = hostap_config.HostapConfig.MODE_11N_PURE
    ap_config = hostap_config.HostapConfig(n_capabilities=caps,
                                           channel=11, mode=mode)
    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)
