summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorQi Jiang <qijiang@google.com>2018-10-18 22:51:42 -0700
committerQi Jiang <qijiang@google.com>2018-10-18 22:51:42 -0700
commitddd0114b34c79cbd5e2fe23809f67fb051b1fb3c (patch)
tree235cce49a55ae9a587e7181f59fd7529adfd0f55
parent56c1213977eddac551f3e6539cd0fcd4baf61027 (diff)
downloadplatform_tools_test_connectivity-ddd0114b34c79cbd5e2fe23809f67fb051b1fb3c.tar.gz
platform_tools_test_connectivity-ddd0114b34c79cbd5e2fe23809f67fb051b1fb3c.tar.bz2
platform_tools_test_connectivity-ddd0114b34c79cbd5e2fe23809f67fb051b1fb3c.zip
Fix to the wifi roaming script
Fixes to the wifi roaming scripts. Remove the duplicated bridge config attributes to avoid error in teardown tests and improve the ap connection function to support specific ap. Test: Done Bug: None Change-Id: I8d099459a2444ca14f31d769855c2be6f0e0d26d Signed-off-by: Qi Jiang <qijiang@google.com>
-rw-r--r--acts/framework/acts/test_utils/power/PowerBaseTest.py20
-rw-r--r--acts/tests/google/power/wifi/PowerWiFiroamingTest.py96
2 files changed, 74 insertions, 42 deletions
diff --git a/acts/framework/acts/test_utils/power/PowerBaseTest.py b/acts/framework/acts/test_utils/power/PowerBaseTest.py
index c5cdf77de9..ddd10d14bd 100644
--- a/acts/framework/acts/test_utils/power/PowerBaseTest.py
+++ b/acts/framework/acts/test_utils/power/PowerBaseTest.py
@@ -95,8 +95,8 @@ class PowerBaseTest(base_test.BaseTestClass):
def __init__(self, controllers):
base_test.BaseTestClass.__init__(self, controllers)
- BlackboxMetricLogger.for_test_case(metric_name='avg_current',
- result_attr='test_result')
+ BlackboxMetricLogger.for_test_case(
+ metric_name='avg_current', result_attr='test_result')
def setup_class(self):
@@ -445,22 +445,28 @@ class PowerBaseTest(base_test.BaseTestClass):
if retry_measure > MEASUREMENT_RETRY_COUNT:
self.log.error('Test failed after maximum measurement retry')
- def setup_ap_connection(self, network, bandwidth=80, connect=True):
+ def setup_ap_connection(self, network, bandwidth=80, connect=True,
+ ap=None):
"""Setup AP and connect DUT to it.
Args:
network: the network config for the AP to be setup
bandwidth: bandwidth of the WiFi network to be setup
connect: indicator of if connect dut to the network after setup
+ ap: access point object, default is None to find the main AP
Returns:
self.brconfigs: dict for bridge interface configs
"""
wutils.wifi_toggle_state(self.dut, True)
- if hasattr(self, 'access_points'):
- self.brconfigs = wputils.ap_setup(
- self.access_point, network, bandwidth=bandwidth)
+ if not ap:
+ if hasattr(self, 'access_points'):
+ self.brconfigs = wputils.ap_setup(
+ self.access_point, network, bandwidth=bandwidth)
+ else:
+ self.brconfigs = wputils.ap_setup(ap, network, bandwidth=bandwidth)
if connect:
- wutils.wifi_connect(self.dut, network)
+ wutils.wifi_connect(self.dut, network, num_of_tries=3)
+ return self.brconfigs
def process_iperf_results(self):
"""Get the iperf results and process.
diff --git a/acts/tests/google/power/wifi/PowerWiFiroamingTest.py b/acts/tests/google/power/wifi/PowerWiFiroamingTest.py
index 6f9dcdd73a..3a03223ebd 100644
--- a/acts/tests/google/power/wifi/PowerWiFiroamingTest.py
+++ b/acts/tests/google/power/wifi/PowerWiFiroamingTest.py
@@ -14,6 +14,7 @@
# See the License for the specific language governing permissions and
# limitations under the License.
+import copy
import time
from acts import utils
from acts.controllers.ap_lib import hostapd_constants as hc
@@ -25,6 +26,11 @@ from acts.test_utils.wifi import wifi_power_test_utils as wputils
class PowerWiFiroamingTest(PWBT.PowerWiFiBaseTest):
+ def teardown_test(self):
+ # Delete the brconfigs attributes as this is duplicated with one of the
+ # ap's bridge interface config
+ delattr(self, 'brconfigs')
+ super().teardown_test()
# Test cases
@test_tracker_info(uuid='392622d3-0c5c-4767-afa2-abfb2058b0b8')
@@ -33,13 +39,17 @@ class PowerWiFiroamingTest(PWBT.PowerWiFiBaseTest):
Change the attenuation level to trigger roaming between two APs
"""
- self.log.info('Set attenuation to connect device to both APs')
- self.set_attenuation(self.atten_level['zero_atten'])
# Setup both APs
- network_main = self.main_network[hc.BAND_2G]
- network_aux = self.aux_network[hc.BAND_2G]
- self.brconfigs_aux = self.setup_ap_connection(network_aux)
- self.brconfigs_main = self.setup_ap_connection(network_main)
+ network_main = copy.deepcopy(self.main_network)[hc.BAND_2G]
+ network_aux = copy.deepcopy(self.aux_network)[hc.BAND_2G]
+ self.log.info('Set attenuation to connect device to the aux AP')
+ self.set_attenuation(self.atten_level[wc.AP_AUX])
+ self.brconfigs_aux = self.setup_ap_connection(
+ network_aux, ap=self.access_point_aux)
+ self.log.info('Set attenuation to connect device to the main AP')
+ self.set_attenuation(self.atten_level[wc.AP_MAIN])
+ self.brconfigs_main = self.setup_ap_connection(
+ network_main, ap=self.access_point_main)
self.dut.droid.goToSleepNow()
time.sleep(5)
# Set attenuator to trigger roaming
@@ -51,20 +61,22 @@ class PowerWiFiroamingTest(PWBT.PowerWiFiBaseTest):
def test_screenoff_fastroaming(self):
# Setup the aux AP
- network_main = self.main_network[hc.BAND_2G]
- network_aux = self.aux_network[hc.BAND_2G]
+ network_main = copy.deepcopy(self.main_network)[hc.BAND_2G]
+ network_aux = copy.deepcopy(self.aux_network)[hc.BAND_2G]
# Set the same SSID for the AUX AP for fastroaming purpose
network_aux[wc.SSID] = network_main[wc.SSID]
# Set attenuator to connect the phone to the aux AP
self.log.info('Set attenuation to connect device to the aux AP')
self.set_attenuation(self.atten_level[wc.AP_AUX])
- self.brconfigs_aux = self.setup_ap_connection(network_aux)
+ self.brconfigs_aux = self.setup_ap_connection(
+ network_aux, ap=self.access_point_aux)
# Set attenuator to connect the phone to main AP
self.log.info('Set attenuation to connect device to the main AP')
self.set_attenuation(self.atten_level[wc.AP_MAIN])
- self.brconfigs_main = self.setup_ap_connection(network_main)
- time.sleep(5)
+ self.brconfigs_main = self.setup_ap_connection(
+ network_main, ap=self.access_point_main)
self.dut.droid.goToSleepNow()
+ time.sleep(5)
# Trigger fastroaming
self.dut.log.info('Trigger fastroaming now')
self.set_attenuation(self.atten_level[wc.AP_AUX])
@@ -74,13 +86,19 @@ class PowerWiFiroamingTest(PWBT.PowerWiFiBaseTest):
def test_screenoff_toggle_between_AP(self):
# Set attenuator to connect phone to both networks
- self.log.info('Set attenuation to connect device to both APs')
- self.set_attenuation(self.atten_level[self.current_test_name])
+ network_main = copy.deepcopy(self.main_network)[hc.BAND_2G]
+ network_aux = copy.deepcopy(self.aux_network)[hc.BAND_2G]
# Connect to both APs
network_main = self.main_network[hc.BAND_2G]
network_aux = self.aux_network[hc.BAND_2G]
- self.brconfigs_main = self.setup_ap_connection(network_main)
- self.brconfigs_aux = self.setup_ap_connection(network_aux)
+ self.log.info('Set attenuation to connect device to the main AP')
+ self.set_attenuation(self.atten_level[wc.AP_MAIN])
+ self.brconfigs_main = self.setup_ap_connection(
+ network_main, ap=self.access_point_main)
+ self.log.info('Set attenuation to connect device to the aux AP')
+ self.set_attenuation(self.atten_level[wc.AP_AUX])
+ self.brconfigs_aux = self.setup_ap_connection(
+ network_aux, ap=self.access_point_aux)
self.mon_info.duration = self.toggle_interval
self.dut.droid.goToSleepNow()
time.sleep(5)
@@ -89,31 +107,35 @@ class PowerWiFiroamingTest(PWBT.PowerWiFiBaseTest):
for i in range(self.toggle_times):
self.dut.log.info('Connecting to %s' % network_main[wc.SSID])
self.dut.droid.wifiConnect(network_main)
- file_path, avg_current = wputils.monsoon_data_collect_save(
- self.dut, self.mon_info, self.current_test_name)
+ file_path, avg_current = self.monsoon_data_collect_save()
self.dut.log.info('Connecting to %s' % network_aux[wc.SSID])
self.dut.droid.wifiConnect(network_aux)
- file_path, avg_current = wputils.monsoon_data_collect_save(
- self.dut, self.mon_info, self.current_test_name)
+ file_path, avg_current = self.monsoon_data_collect_save()
[plot, dt] = wputils.monsoon_data_plot(self.mon_info, file_path)
- avg_current = dt.source.data['y0'][0]
+ self.test_result = dt.source.data['y0'][0]
# Take Bugreport
if self.bug_report:
self.dut.take_bug_report(self.test_name, begin_time)
# Path fail check
- wputils.pass_fail_check(self, avg_current)
+ self.pass_fail_check()
@test_tracker_info(uuid='e5ff95c0-b17e-425c-a903-821ba555a9b9')
def test_screenon_toggle_between_AP(self):
# Set attenuator to connect phone to both networks
- self.log.info('Set attenuation to connect device to both APs')
- self.set_attenuation(self.atten_level[self.current_test_name])
+ network_main = copy.deepcopy(self.main_network)[hc.BAND_2G]
+ network_aux = copy.deepcopy(self.aux_network)[hc.BAND_2G]
# Connect to both APs
network_main = self.main_network[hc.BAND_2G]
network_aux = self.aux_network[hc.BAND_2G]
- self.brconfigs_main = self.setup_ap_connection(network_main)
- self.brconfigs_aux = self.setup_ap_connection(network_aux)
+ self.log.info('Set attenuation to connect device to the main AP')
+ self.set_attenuation(self.atten_level[wc.AP_MAIN])
+ self.brconfigs_main = self.setup_ap_connection(
+ network_main, ap=self.access_point_main)
+ self.log.info('Set attenuation to connect device to the aux AP')
+ self.set_attenuation(self.atten_level[wc.AP_AUX])
+ self.brconfigs_aux = self.setup_ap_connection(
+ network_aux, ap=self.access_point_aux)
self.mon_info.duration = self.toggle_interval
time.sleep(5)
# Toggle between two networks
@@ -121,31 +143,35 @@ class PowerWiFiroamingTest(PWBT.PowerWiFiBaseTest):
for i in range(self.toggle_times):
self.dut.log.info('Connecting to %s' % network_main[wc.SSID])
self.dut.droid.wifiConnect(network_main)
- file_path, avg_current = wputils.monsoon_data_collect_save(
- self.dut, self.mon_info, self.current_test_name)
+ file_path, avg_current = self.monsoon_data_collect_save()
self.dut.log.info('Connecting to %s' % network_aux[wc.SSID])
self.dut.droid.wifiConnect(network_aux)
- file_path, avg_current = wputils.monsoon_data_collect_save(
- self.dut, self.mon_info, self.current_test_name)
+ file_path, avg_current = self.monsoon_data_collect_save()
[plot, dt] = wputils.monsoon_data_plot(self.mon_info, file_path)
- avg_current = dt.source.data['y0'][0]
+ self.test_result = dt.source.data['y0'][0]
# Take Bugreport
if self.bug_report:
self.dut.take_bug_report(self.test_name, begin_time)
# Path fail check
- wputils.pass_fail_check(self, avg_current)
+ self.pass_fail_check()
@test_tracker_info(uuid='a16ae337-326f-4d09-990f-42232c3c0dc4')
def test_screenoff_wifi_wedge(self):
# Set attenuator to connect phone to both networks
- self.log.info('Set attenuation to connect device to both APs')
- self.set_attenuation(self.atten_level['zero_atten'])
+ network_main = copy.deepcopy(self.main_network)[hc.BAND_2G]
+ network_aux = copy.deepcopy(self.aux_network)[hc.BAND_2G]
# Connect to both APs
network_main = self.main_network[hc.BAND_2G]
network_aux = self.aux_network[hc.BAND_2G]
- self.brconfigs_main = self.setup_ap_connection(network_main)
- self.brconfigs_aux = self.setup_ap_connection(network_aux)
+ self.log.info('Set attenuation to connect device to the main AP')
+ self.set_attenuation(self.atten_level[wc.AP_MAIN])
+ self.brconfigs_main = self.setup_ap_connection(
+ network_main, ap=self.access_point_main)
+ self.log.info('Set attenuation to connect device to the aux AP')
+ self.set_attenuation(self.atten_level[wc.AP_AUX])
+ self.brconfigs_aux = self.setup_ap_connection(
+ network_aux, ap=self.access_point_aux)
self.log.info('Forget network {}'.format(network_aux[wc.SSID]))
wutils.wifi_forget_network(self.dut, network_aux[wc.SSID])
self.log.info('Set attenuation to trigger wedge condition')