blob: 5516bec79ac731eecdf21d68307b4fd5d2b68cb4 [file] [log] [blame]
#!/usr/bin/env python3
#
# Copyright (C) 2018 The Android Open Source Project
#
# Licensed under the Apache License, Version 2.0 (the "License"); you may not
# use this file except in compliance with the License. You may obtain a copy of
# the License at
#
# http://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing, software
# distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
# WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
# License for the specific language governing permissions and limitations under
# the License.
"""
Test to check MultiProfile Stress with Wlan.
Test Setup:
One Android device.
"""
import time
from acts.test_utils.bt import BtEnum
from acts.test_utils.bt.bt_test_utils import clear_bonded_devices
from acts.test_utils.coex.CoexBaseTest import CoexBaseTest
from acts.test_utils.coex.coex_test_utils import disconnect_headset_from_dev
from acts.test_utils.coex.coex_test_utils import pair_and_connect_headset
class CoexBtMultiProfileStressTest(CoexBaseTest):
def setup_class(self):
super().setup_class()
self.receiver = self.relay_devices[1]
req_params = ["iterations"]
self.unpack_userparams(req_params)
def setup_test(self):
super().setup_test()
self.audio_receiver.enter_pairing_mode()
self.receiver.setup()
self.receiver.power_on()
self.receiver.enter_pairing_mode()
def teardown_test(self):
clear_bonded_devices(self.pri_ad)
super().teardown_test()
self.audio_receiver.clean_up()
self.receiver.clean_up()
def initiate_classic_connection_to_multiple_devices(self):
"""Initiates multiple BR/EDR connections.
Steps:
1. Initiate A2DP Connection.
2. Initiate HFP Connection.
3. Disconnect A2DP Connection.
4. Disconnect HFP Connection.
5. Repeat step 1 to 4.
Returns:
True if successful, False otherwise.
"""
for i in range(self.iterations):
if not pair_and_connect_headset(
self.pri_ad, self.receiver.mac_address,
{BtEnum.BluetoothProfile.A2DP.value}):
self.log.error("Failed to connect A2DP Profile.")
return False
time.sleep(2)
if not pair_and_connect_headset(
self.pri_ad, self.audio_receiver.mac_address,
{BtEnum.BluetoothProfile.HEADSET.value}):
self.log.error("Failed to connect HEADSET profile.")
return False
time.sleep(2)
if not disconnect_headset_from_dev(
self.pri_ad, self.receiver.mac_address,
[BtEnum.BluetoothProfile.A2DP.value]):
self.log.error("Could not disconnect {}".format(
self.receiver.mac_address))
return False
if not disconnect_headset_from_dev(
self.pri_ad, self.audio_receiver.mac_address,
[BtEnum.BluetoothProfile.HEADSET.value]):
self.log.error("Could not disconnect {}".format(
self.audio_receiver.mac_address))
return False
return True
def initiate_classic_connection_with_iperf(self):
"""Wrapper function to initiate bluetooth classic connection to
multiple devices.
"""
self.run_iperf_and_get_result()
if not self.initiate_classic_connection_to_multiple_devices():
return False
return self.teardown_result()
def test_stress_multiple_connection_with_tcp_ul(self):
""" Connects multiple headsets with wlan traffic over TCP-uplink.
This test is to perform connect and disconnect with A2DP and HFP
profiles on two different bluetooth devices.
Steps:
1. Run wlan traffic over TCP-uplink.
2. Initiate connect and disconnect to multiple profiles from primary
device.
Returns:
True if successful, False otherwise.
Test Id: Bt_CoEx_Stress_037
"""
if not self.initiate_classic_connection_with_iperf():
return False
return True
def test_stress_multiple_connection_with_tcp_dl(self):
""" Connects multiple headsets with wlan traffic over TCP-downlink.
This test is to perform connect and disconnect with A2DP and HFP
profiles on two different bluetooth devices.
Steps:
1. Run wlan traffic over TCP-downlink.
2. Initiate connect and disconnect to multiple profiles from primary
device.
Returns:
True if successful, False otherwise.
Test Id: Bt_CoEx_Stress_038
"""
if not self.initiate_classic_connection_with_iperf():
return False
return True
def test_stress_multiple_connection_with_udp_ul(self):
""" Connects multiple headsets with wlan traffic over UDP-uplink.
This test is to perform connect and disconnect with A2DP and HFP
profiles on two different bluetooth devices.
Steps:
1. Run wlan traffic over UDP-uplink.
2. Initiate connect and disconnect to multiple profiles from primary
device.
Returns:
True if successful, False otherwise.
Test Id: Bt_CoEx_Stress_039
"""
if not self.initiate_classic_connection_with_iperf():
return False
return True
def test_stress_multiple_connection_with_udp_dl(self):
""" Connects multiple headsets with wlan traffic over UDP-downlink.
This test is to perform connect and disconnect with A2DP and HFP
profiles.
Steps:
1. Run wlan traffic over UDP-downlink.
2. Initiate connect and disconnect to multiple profiles from primary
device.
Returns:
True if successful, False otherwise.
Test Id: Bt_CoEx_Stress_040
"""
if not self.initiate_classic_connection_with_iperf():
return False
return True