# 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.vht20_aes'
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 AES encrypted HT20 802.11n network.
"""


from autotest_lib.server.cros.network import hostap_config
from autotest_lib.client.common_lib.cros.network import xmlrpc_security_types


def run(machine):
    host = hosts.create_host(machine)
    wpa_config = xmlrpc_security_types.WPAConfig(
            psk='chromeos',
            wpa_mode=xmlrpc_security_types.WPAConfig.MODE_PURE_WPA2,
            wpa_ciphers=[xmlrpc_security_types.WPAConfig.CIPHER_CCMP])
    configs = [hostap_config.HostapConfig(
                        channel=36,
                        mode=hostap_config.HostapConfig.MODE_11AC_PURE,
                        n_capabilities=[hostap_config.HostapConfig.N_CAPABILITY_HT20],
                        vht_channel_width=hostap_config.HostapConfig.VHT_CHANNEL_WIDTH_40,
                                          security_config=wpa_config)]
    job.run_test('network_WiFi_Perf', tag=NAME.split('.')[1],
                 host=host, raw_cmdline_args=args,
                 additional_params=configs)


parallel_simple(run, machines)
