# Copyright (c) 2013 The Chromium OS Authors. All rights reserved.
# Use of this source code is governed by a BSD-style license that can be
# found in the LICENSE file.

AUTHOR = 'wiley, pstew, quiche'
NAME = 'network_WiFi_Perf.ht20'
ATTRIBUTES = 'suite:wifi_perf'
TIME = 'SHORT'
MAX_RESULT_SIZE_KB = 512000
TEST_TYPE = 'Server'
DEPENDENCIES = 'wificell'

DOC = """
This test uses netperf to measure and verify the maximal receiving and
transmitting throughput on a DUT with an open HT20 802.11n network.
"""


from autotest_lib.server.cros.network import hostap_config


def run(machine):
    host = hosts.create_host(machine)
    caps = [hostap_config.HostapConfig.N_CAPABILITY_HT20]
    mode = hostap_config.HostapConfig.MODE_11N_PURE
    configs = [hostap_config.HostapConfig(n_capabilities=caps,
                                          channel=channel, mode=mode)
               for channel in (1, 157)]
    job.run_test('network_WiFi_Perf', tag=NAME.split('.')[1],
                 host=host, raw_cmdline_args=args,
                 additional_params=configs)


parallel_simple(run, machines)
