# Copyright 2021 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 = 'bfreed'
NAME = 'network_WiFi_BluetoothStreamPerf.11g'
ATTRIBUTES = 'suite:bluetooth_wifi_coex'
# This test is flaky but adding to  'suite:bluetooth_flaky' will use up
# a lot of lab capacity
TIME = 'MEDIUM'
TEST_TYPE = 'Server'
DEPENDENCIES = 'wificell, working_bluetooth_btpeer:1'
PY_VERSION = 3

DOC = """
This test uses netperf to measure the maximal receiving and transmitting
throughput on a DUT with an open 802.11g network while operating bluetooth.
"""


from autotest_lib.server import utils
from autotest_lib.server.cros.network import hostap_config

args_dict = utils.args_to_dict(args)

def run(machine):
    host = hosts.create_host(machine)

    mode = hostap_config.HostapConfig.MODE_11G
    configs = [hostap_config.HostapConfig(channel=channel, mode=mode)
               for channel in (6,)]

    job.run_test('network_WiFi_BluetoothStreamPerf', tag=NAME.split('.')[1],
                 host=host, raw_cmdline_args=args, args_dict=args_dict,
                 additional_params=configs, test_name='coex_test')

parallel_simple(run, machines)
