# Copyright 2013 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.ht40_ch001'
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 HT40 802.11n, Channel 1.
    '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)
    ap_config = hostap_config.HostapConfig(
            channel=1,
            n_capabilities=[hostap_config.HostapConfig.N_CAPABILITY_HT40_PLUS],
            mode=hostap_config.HostapConfig.MODE_11N_PURE,
            spectrum_mgmt_required=True)
    attenuation_increment = 4
    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)
