1204 lines
57 KiB
Python
1204 lines
57 KiB
Python
#
|
|
# Copyright 2017 - 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.
|
|
|
|
import time
|
|
from acts import asserts
|
|
from acts import utils
|
|
from acts import signals
|
|
from acts.keys import Config
|
|
from acts.test_decorators import test_tracker_info
|
|
from acts_contrib.test_utils.net import connectivity_const as cconsts
|
|
from acts_contrib.test_utils.wifi import wifi_test_utils as wutils
|
|
from acts_contrib.test_utils.wifi.WifiBaseTest import WifiBaseTest
|
|
from acts_contrib.test_utils.wifi.aware import aware_test_utils as autils
|
|
from acts.controllers.openwrt_lib.openwrt_constants import OpenWrtWifiSetting
|
|
import os
|
|
|
|
WifiEnums = wutils.WifiEnums
|
|
|
|
|
|
class WifiRoamingTest(WifiBaseTest):
|
|
|
|
def setup_class(self):
|
|
"""Configure the required networks for testing roaming."""
|
|
super().setup_class()
|
|
|
|
self.dut = self.android_devices[0]
|
|
self.dut_client = self.android_devices[1]
|
|
req_params = ["roaming_attn", "sae_roaming_unspported_list"]
|
|
self.unpack_userparams(req_param_names=req_params,)
|
|
self.country_code = wutils.WifiEnums.CountryCode.US
|
|
if hasattr(self, "country_code_file"):
|
|
if isinstance(self.country_code_file, list):
|
|
self.country_code_file = self.country_code_file[0]
|
|
if not os.path.isfile(self.country_code_file):
|
|
self.country_code_file = os.path.join(
|
|
self.user_params[Config.key_config_path.value],
|
|
self.country_code_file)
|
|
self.country_code = utils.load_config(
|
|
self.country_code_file)["country"]
|
|
|
|
if "AccessPoint" in self.user_params:
|
|
self.legacy_configure_ap_and_start(ap_count=2)
|
|
|
|
def teardown_class(self):
|
|
self.dut.ed.clear_all_events()
|
|
if "AccessPoint" in self.user_params:
|
|
del self.user_params["reference_networks"]
|
|
del self.user_params["open_network"]
|
|
|
|
def setup_test(self):
|
|
super().setup_test()
|
|
self.dut.ed.clear_all_events()
|
|
self.dut.droid.wakeLockAcquireBright()
|
|
self.dut.droid.wakeUpNow()
|
|
asserts.skip_if("sae" in self.test_name and
|
|
self.dut.model in self.sae_roaming_unspported_list,
|
|
"%s doesn't support wpa3 roaming." % self.dut.model)
|
|
|
|
def teardown_test(self):
|
|
super().teardown_test()
|
|
self.dut.droid.wakeLockRelease()
|
|
self.dut.droid.goToSleepNow()
|
|
wutils.reset_wifi(self.dut)
|
|
wutils.set_attns(self.attenuators, "default")
|
|
for ad in self.android_devices:
|
|
wutils.set_wifi_country_code(ad, self.country_code)
|
|
if "OpenWrtAP" in self.user_params:
|
|
for ap in self.access_points:
|
|
ap.close()
|
|
|
|
### Helper Methods ###
|
|
|
|
def register_network_callback_for_internet(self):
|
|
self.dut.log.debug("Registering network callback for wifi internet"
|
|
"connectivity")
|
|
network_request = {
|
|
cconsts.NETWORK_CAP_TRANSPORT_TYPE_KEY :
|
|
cconsts.NETWORK_CAP_TRANSPORT_WIFI,
|
|
cconsts.NETWORK_CAP_CAPABILITY_KEY :
|
|
[cconsts.NETWORK_CAP_CAPABILITY_INTERNET]
|
|
}
|
|
key = self.dut.droid.connectivityRegisterNetworkCallback(network_request)
|
|
return key
|
|
|
|
def generate_wifi_info(self, network):
|
|
return {
|
|
WifiEnums.SSID_KEY : network[WifiEnums.SSID_KEY],
|
|
# We need to use "BSSID" in WifiInfo map, also need to use lower
|
|
# chars for bssid.
|
|
WifiEnums.BSSID_KEY : network["bssid"].lower()
|
|
}
|
|
|
|
def roaming_from_AP1_and_AP2(self, AP1_network, AP2_network):
|
|
"""Test roaming between two APs.
|
|
|
|
Args:
|
|
AP1_network: AP-1's network information.
|
|
AP2_network: AP-2's network information.
|
|
|
|
Steps:
|
|
1. Make AP1 visible, AP2 not visible.
|
|
2. Connect to AP1's ssid.
|
|
3. Make AP1 not visible, AP2 visible.
|
|
4. Expect DUT to roam to AP2.
|
|
5. Validate connection information and ping.
|
|
"""
|
|
network_cb_key = None
|
|
if self.dut.droid.isSdkAtLeastS():
|
|
network_cb_key = self.register_network_callback_for_internet()
|
|
wutils.set_attns(self.attenuators, "AP1_on_AP2_off", self.roaming_attn)
|
|
wifi_config = AP1_network.copy()
|
|
wifi_config.pop("bssid")
|
|
wutils.connect_to_wifi_network(self.dut, wifi_config)
|
|
if network_cb_key is not None:
|
|
self.dut.log.info("Waiting for onAvailable and "
|
|
"onCapabilitiesChanged after connection")
|
|
# Ensure that the connection completed and we got the ON_AVAILABLE
|
|
# callback.
|
|
autils.wait_for_event_with_keys(
|
|
self.dut,
|
|
cconsts.EVENT_NETWORK_CALLBACK,
|
|
20,
|
|
(cconsts.NETWORK_CB_KEY_ID, network_cb_key),
|
|
(cconsts.NETWORK_CB_KEY_EVENT, cconsts.NETWORK_CB_AVAILABLE))
|
|
autils.wait_for_event_with_keys(
|
|
self.dut, cconsts.EVENT_NETWORK_CALLBACK, 10,
|
|
(cconsts.NETWORK_CB_KEY_ID, network_cb_key),
|
|
(cconsts.NETWORK_CB_KEY_EVENT,
|
|
cconsts.NETWORK_CB_CAPABILITIES_CHANGED),
|
|
(cconsts.NETWORK_CB_KEY_TRANSPORT_INFO,
|
|
self.generate_wifi_info(AP1_network)))
|
|
self.log.info("Roaming from %s to %s", AP1_network, AP2_network)
|
|
wutils.trigger_roaming_and_validate(
|
|
self.dut, self.attenuators, "AP1_off_AP2_on", AP2_network,
|
|
self.roaming_attn)
|
|
if network_cb_key is not None:
|
|
self.dut.log.info("Waiting for onCapabilitiesChanged after"
|
|
" roaming")
|
|
# Ensure that the roaming complete triggered a capabilities change
|
|
# with the new bssid.
|
|
autils.wait_for_event_with_keys(
|
|
self.dut, cconsts.EVENT_NETWORK_CALLBACK, 10,
|
|
(cconsts.NETWORK_CB_KEY_ID, network_cb_key),
|
|
(cconsts.NETWORK_CB_KEY_EVENT,
|
|
cconsts.NETWORK_CB_CAPABILITIES_CHANGED),
|
|
(cconsts.NETWORK_CB_KEY_TRANSPORT_INFO,
|
|
self.generate_wifi_info(AP2_network)))
|
|
|
|
### Test Cases ###
|
|
|
|
@test_tracker_info(uuid="db8a46f9-713f-4b98-8d9f-d36319905b0a")
|
|
def test_roaming_between_AP1_to_AP2_open_2g(self):
|
|
if "OpenWrtAP" in self.user_params:
|
|
self.configure_openwrt_ap_and_start(open_network=True,
|
|
ap_count=2,
|
|
mirror_ap=True)
|
|
self.log.info("BSSID map: %s" % self.bssid_map)
|
|
ap1_network = self.open_network[0]["2g"]
|
|
ap2_network = self.open_network[1]["2g"]
|
|
if "OpenWrtAP" in self.user_params:
|
|
ap1_network["bssid"] = self.bssid_map[0]["2g"][ap1_network["SSID"]]
|
|
ap2_network["bssid"] = self.bssid_map[1]["2g"][ap2_network["SSID"]]
|
|
self.roaming_from_AP1_and_AP2(ap1_network, ap2_network)
|
|
|
|
@test_tracker_info(uuid="0db67d9b-6ea9-4f40-acf2-155c4ecf9dc5")
|
|
def test_roaming_between_AP1_to_AP2_open_5g(self):
|
|
if "OpenWrtAP" in self.user_params:
|
|
self.configure_openwrt_ap_and_start(open_network=True,
|
|
ap_count=2,
|
|
mirror_ap=True)
|
|
ap1_network = self.open_network[0]["5g"]
|
|
ap2_network = self.open_network[1]["5g"]
|
|
if "OpenWrtAP" in self.user_params:
|
|
ap1_network["bssid"] = self.bssid_map[0]["5g"][ap1_network["SSID"]]
|
|
ap2_network["bssid"] = self.bssid_map[1]["5g"][ap2_network["SSID"]]
|
|
self.roaming_from_AP1_and_AP2(ap1_network, ap2_network)
|
|
|
|
@test_tracker_info(uuid="eabc7319-d962-4bef-b679-725e9ff00420")
|
|
def test_roaming_between_AP1_to_AP2_psk_2g(self):
|
|
if "OpenWrtAP" in self.user_params:
|
|
self.configure_openwrt_ap_and_start(wpa_network=True,
|
|
ap_count=2,
|
|
mirror_ap=True)
|
|
ap1_network = self.reference_networks[0]["2g"]
|
|
ap2_network = self.reference_networks[1]["2g"]
|
|
if "OpenWrtAP" in self.user_params:
|
|
ap1_network["bssid"] = self.bssid_map[0]["2g"][ap1_network["SSID"]]
|
|
ap2_network["bssid"] = self.bssid_map[1]["2g"][ap2_network["SSID"]]
|
|
self.roaming_from_AP1_and_AP2(ap1_network, ap2_network)
|
|
|
|
@test_tracker_info(uuid="1cf9c681-4ff0-45c1-9719-f01629f6a7f7")
|
|
def test_roaming_between_AP1_to_AP2_psk_5g(self):
|
|
if "OpenWrtAP" in self.user_params:
|
|
self.configure_openwrt_ap_and_start(wpa_network=True,
|
|
ap_count=2,
|
|
mirror_ap=True)
|
|
ap1_network = self.reference_networks[0]["5g"]
|
|
ap2_network = self.reference_networks[1]["5g"]
|
|
if "OpenWrtAP" in self.user_params:
|
|
ap1_network["bssid"] = self.bssid_map[0]["5g"][ap1_network["SSID"]]
|
|
ap2_network["bssid"] = self.bssid_map[1]["5g"][ap2_network["SSID"]]
|
|
self.roaming_from_AP1_and_AP2(ap1_network, ap2_network)
|
|
|
|
@test_tracker_info(uuid="a28f7d2e-fae4-4e66-b633-7ee59f8b46e0")
|
|
def test_roaming_between_AP1_to_AP2_owe_2g(self):
|
|
if "OpenWrtAP" in self.user_params:
|
|
self.configure_openwrt_ap_and_start(owe_network=True,
|
|
ap_count=2,
|
|
mirror_ap=True)
|
|
ap1_network = self.owe_networks[0]["2g"]
|
|
ap2_network = self.owe_networks[1]["2g"]
|
|
if "OpenWrtAP" in self.user_params:
|
|
ap1_network["bssid"] = self.bssid_map[0]["2g"][ap1_network["SSID"]]
|
|
ap2_network["bssid"] = self.bssid_map[1]["2g"][ap2_network["SSID"]]
|
|
self.roaming_from_AP1_and_AP2(ap1_network, ap2_network)
|
|
|
|
@test_tracker_info(uuid="3c39110a-9336-4abd-b885-acbba85dc10d")
|
|
def test_roaming_between_AP1_to_AP2_owe_5g(self):
|
|
if "OpenWrtAP" in self.user_params:
|
|
self.configure_openwrt_ap_and_start(owe_network=True,
|
|
ap_count=2,
|
|
mirror_ap=True)
|
|
ap1_network = self.owe_networks[0]["5g"]
|
|
ap2_network = self.owe_networks[1]["5g"]
|
|
if "OpenWrtAP" in self.user_params:
|
|
ap1_network["bssid"] = self.bssid_map[0]["5g"][ap1_network["SSID"]]
|
|
ap2_network["bssid"] = self.bssid_map[1]["5g"][ap2_network["SSID"]]
|
|
self.roaming_from_AP1_and_AP2(ap1_network, ap2_network)
|
|
|
|
@test_tracker_info(uuid="68b2baf6-162a-44f2-a00d-4973e5ac9471")
|
|
def test_roaming_between_AP1_to_AP2_sae_2g(self):
|
|
if "OpenWrtAP" in self.user_params:
|
|
self.configure_openwrt_ap_and_start(sae_network=True,
|
|
ap_count=2,
|
|
mirror_ap=True)
|
|
ap1_network = self.sae_networks[0]["2g"]
|
|
ap2_network = self.sae_networks[1]["2g"]
|
|
if "OpenWrtAP" in self.user_params:
|
|
ap1_network["bssid"] = self.bssid_map[0]["2g"][ap1_network["SSID"]]
|
|
ap2_network["bssid"] = self.bssid_map[1]["2g"][ap2_network["SSID"]]
|
|
self.roaming_from_AP1_and_AP2(ap1_network, ap2_network)
|
|
|
|
@test_tracker_info(uuid="20e24ed3-0cd1-46dd-bd26-2183ffb443e6")
|
|
def test_roaming_between_AP1_to_AP2_sae_5g(self):
|
|
if "OpenWrtAP" in self.user_params:
|
|
self.configure_openwrt_ap_and_start(sae_network=True,
|
|
ap_count=2,
|
|
mirror_ap=True)
|
|
ap1_network = self.sae_networks[0]["5g"]
|
|
ap2_network = self.sae_networks[1]["5g"]
|
|
if "OpenWrtAP" in self.user_params:
|
|
ap1_network["bssid"] = self.bssid_map[0]["5g"][ap1_network["SSID"]]
|
|
ap2_network["bssid"] = self.bssid_map[1]["5g"][ap2_network["SSID"]]
|
|
self.roaming_from_AP1_and_AP2(ap1_network, ap2_network)
|
|
|
|
@test_tracker_info(uuid="521269cb-5d2c-46e6-bc01-a03bd148ce28")
|
|
def test_soft_2g_ap_channel_when_roam_to_chan_13(self):
|
|
"""Verify softAp 2G channel when after roaming to network on channel 13.
|
|
|
|
Steps:
|
|
1. Configure 2 APs - 1 on channel 6, the other on channel 13.
|
|
2. Connect DUT to AP on channel 6.
|
|
3. Start softAp on DUT on 2G band.
|
|
4. Verify softAp is started on channel 6.
|
|
5. Roam to AP2 with channel 13.
|
|
6. Verify SoftAp on DUT changed to channel 13.
|
|
"""
|
|
for ad in self.android_devices:
|
|
wutils.set_wifi_country_code(
|
|
ad, wutils.WifiEnums.CountryCode.AUSTRALIA)
|
|
if "OpenWrtAP" in self.user_params:
|
|
self.configure_openwrt_ap_and_start(open_network=True,
|
|
ap_count=2,
|
|
channel_2g_ap2=13,
|
|
mirror_ap=True)
|
|
ap1_network = self.open_network[0]["2g"]
|
|
ap2_network = self.open_network[1]["2g"]
|
|
if "OpenWrtAP" in self.user_params:
|
|
ap1_network["bssid"] = self.bssid_map[0]["2g"][ap1_network["SSID"]]
|
|
ap2_network["bssid"] = self.bssid_map[1]["2g"][ap2_network["SSID"]]
|
|
wutils.set_attns(self.attenuators, "AP1_on_AP2_off", self.roaming_attn)
|
|
wutils.connect_to_wifi_network(self.dut, ap1_network)
|
|
|
|
# start softap on 2G and verify the channel is 6.
|
|
sap_config = {
|
|
WifiEnums.SSID_KEY: "hotspot_%s" % utils.rand_ascii_str(6),
|
|
WifiEnums.PWD_KEY: "pass_%s" % utils.rand_ascii_str(6),
|
|
WifiEnums.AP_BAND_KEY: WifiEnums.WIFI_CONFIG_SOFTAP_BAND_2G}
|
|
asserts.assert_true(
|
|
self.dut.droid.wifiSetWifiApConfiguration(sap_config),
|
|
"Failed to set WifiAp Configuration")
|
|
wutils.start_wifi_tethering_saved_config(self.dut)
|
|
softap_conf = self.dut.droid.wifiGetApConfiguration()
|
|
self.log.info("softap conf: %s" % softap_conf)
|
|
wutils.connect_to_wifi_network(self.dut_client, sap_config)
|
|
conn_info = self.dut_client.droid.wifiGetConnectionInfo()
|
|
self.log.info("Wifi connection info on dut_client: %s" % conn_info)
|
|
softap_channel = wutils.WifiEnums.freq_to_channel[conn_info["frequency"]]
|
|
asserts.assert_true(softap_channel == 6,
|
|
"Dut client did not connect to softAp on channel 6")
|
|
|
|
# trigger roaming to AP2 with channel 13
|
|
self.log.info("Roaming from %s to %s", ap1_network, ap2_network)
|
|
wutils.trigger_roaming_and_validate(
|
|
self.dut, self.attenuators, "AP1_off_AP2_on", ap2_network,
|
|
self.roaming_attn)
|
|
|
|
# verify softap is now moved to channel 13
|
|
conn_info = self.dut_client.droid.wifiGetConnectionInfo()
|
|
self.log.info("Wifi connection info on dut_client: %s" % conn_info)
|
|
softap_channel = wutils.WifiEnums.freq_to_channel[conn_info["frequency"]]
|
|
asserts.assert_true(softap_channel == 13,
|
|
"Dut client did not connect to softAp on channel 13")
|
|
|
|
@test_tracker_info(uuid="3114d625-5cdd-4205-bb46-5a9d057dc80d")
|
|
def test_roaming_fail_psk_2g(self):
|
|
"""Verify roaming fail with mismatch passwords.
|
|
|
|
Steps:
|
|
DUT connect to AP1.
|
|
Change AP2's password.
|
|
DUT try roaming from AP1 to AP2 with mismatched password.
|
|
Change AP2's password back to original one.
|
|
DUT try roaming from AP1 to AP2 with matched passwords.
|
|
"""
|
|
# Use OpenWrt as Wi-Fi AP when it's available in testbed.
|
|
if "OpenWrtAP" in self.user_params:
|
|
self.configure_openwrt_ap_and_start(wpa_network=True,
|
|
ap_count=2,
|
|
mirror_ap=True)
|
|
self.openwrt1 = self.access_points[0]
|
|
self.openwrt2 = self.access_points[1]
|
|
ap1_network = self.reference_networks[0]["2g"]
|
|
ap2_network = self.reference_networks[1]["2g"]
|
|
# Get APs' BSSIDs.
|
|
ap1_bssid = self.bssid_map[0]["2g"][ap1_network["SSID"]]
|
|
ap2_bssid = self.bssid_map[1]["2g"][ap2_network["SSID"]]
|
|
# Make AP's configs.
|
|
ap1_network["bssid"] = ap1_bssid
|
|
ap2_network["bssid"] = ap2_bssid
|
|
|
|
# Change AP2 2G to password.
|
|
self.openwrt2.set_password(pwd_2g=utils.rand_ascii_str(8))
|
|
|
|
try:
|
|
# DUT roaming from AP1 to AP2 with mismatched passwords.
|
|
self.dut.log.info("Roaming via mismatched passwords to AP2 [{}]"
|
|
.format(ap2_bssid))
|
|
self.roaming_from_AP1_and_AP2(ap1_network, ap2_network)
|
|
except:
|
|
self.dut.log.info("Failed roaming to AP2")
|
|
self.dut.log.info("Roaming via matched passwords to AP2 [{}]"
|
|
.format(ap1_bssid))
|
|
wutils.set_attns_steps(self.attenuators, "AP1_on_AP2_off",
|
|
self.roaming_attn)
|
|
self.openwrt2.set_password(pwd_2g=ap2_network["password"])
|
|
self.dut.log.info("Toggling wifi OFF.")
|
|
wutils.wifi_toggle_state(self.dut, False)
|
|
self.dut.log.info("Toggling wifi ON.")
|
|
wutils.wifi_toggle_state(self.dut, True)
|
|
self.roaming_from_AP1_and_AP2(ap1_network, ap2_network)
|
|
else:
|
|
raise signals.TestFailure("DUT unexpectedly connect to Wi-Fi.")
|
|
|
|
# Use Google OnHub as Wi-Fi AP to test when OpenWrt is no available.
|
|
elif "AccessPoint" in self.user_params:
|
|
network = {'SSID':'test_roaming_fail', 'password':'roam123456@'}
|
|
# AP2 network with incorrect password.
|
|
network_fail = {'SSID':'test_roaming_fail', 'password':'roam123456@#$%^'}
|
|
# Setup AP1 with the correct password.
|
|
wutils.ap_setup(self, 0, self.access_points[0], network)
|
|
network_bssid = self.access_points[0].get_bssid_from_ssid(
|
|
network["SSID"], '2g')
|
|
# Setup AP2 with the incorrect password.
|
|
wutils.ap_setup(self, 1, self.access_points[1], network_fail)
|
|
network_fail_bssid = self.access_points[1].get_bssid_from_ssid(
|
|
network_fail["SSID"], '2g')
|
|
network['bssid'] = network_bssid
|
|
network_fail['bssid'] = network_fail_bssid
|
|
try:
|
|
# Initiate roaming with AP2 configured with incorrect password.
|
|
self.roaming_from_AP1_and_AP2(network, network_fail)
|
|
except:
|
|
self.log.info("Roaming failed to AP2 with incorrect password.")
|
|
# Re-configure AP2 after roaming failed, with correct password.
|
|
self.log.info("Re-configuring AP2 with correct password.")
|
|
wutils.ap_setup(self, 1, self.access_points[1], network)
|
|
self.roaming_from_AP1_and_AP2(network, network_fail)
|
|
|
|
@test_tracker_info(uuid="b6d73094-22bc-4460-9d55-ce34a0a6a8c9")
|
|
def test_roaming_fail_different_bssid(self):
|
|
"""Verify devices is disconnect with difference bssid after roaming
|
|
|
|
Steps:
|
|
1. Configure 2 APs
|
|
2. Connect DUT to AP 1
|
|
3. Roam to AP2
|
|
4. Verify the bssid is difference and the device can't connect
|
|
5. Verify device is disconnect after roaming.
|
|
"""
|
|
if "OpenWrtAP" in self.user_params:
|
|
self.configure_openwrt_ap_and_start(wpa_network=True,
|
|
ap_count=2,
|
|
mirror_ap=True)
|
|
ap1_network = self.reference_networks[0]["2g"]
|
|
ap2_network = self.reference_networks[1]["2g"]
|
|
if "OpenWrtAP" in self.user_params:
|
|
ap1_network["bssid"] = self.bssid_map[0]["2g"][ap1_network["SSID"]]
|
|
ap2_network["bssid"] = self.bssid_map[1]["2g"][ap2_network["SSID"]]
|
|
wutils.set_attns(self.attenuators, "AP1_on_AP2_off")
|
|
wutils.connect_to_wifi_network(self.dut, ap1_network)
|
|
|
|
# Initiate roaming with AP2
|
|
wutils.set_attns(self.attenuators, "AP1_off_AP2_on")
|
|
time.sleep(10)
|
|
try:
|
|
wutils.verify_wifi_connection_info(self.dut, ap2_network)
|
|
except:
|
|
self.log.info("Roaming failed to AP2 with incorrect BSSID")
|
|
wutils.wait_for_disconnect(self.dut)
|
|
self.log.info("Device is disconnect")
|
|
|
|
@test_tracker_info(uuid="641b35c1-7bf8-4d85-a813-1bc30d7bd0d4")
|
|
def test_roaming_between_psk_2g_to_psk_5g(self):
|
|
"""Verify psk when after roaming from 2.4 Ghz to 5 Ghz with OpenWrtAP
|
|
|
|
Steps:
|
|
1. Configure 2 APs
|
|
2. Configure AP2 5Ghz and AP1 2.4Ghz WiFi to same SSID and password
|
|
3. Connect DUT to AP1 2.4Ghz WiFi
|
|
4. Roam to AP2 5Ghz WiFi
|
|
5. Verify the DUT can connect from 2.4Ghz to 5Ghz
|
|
"""
|
|
# Use OpenWrt as Wi-Fi AP when it's available in testbed.
|
|
asserts.skip_if("OpenWrtAP" not in self.user_params, "OpenWrtAP not in user_params")
|
|
self.configure_openwrt_ap_and_start(wpa_network=True,
|
|
ap_count=2)
|
|
self.openwrt1 = self.access_points[0]
|
|
self.openwrt2 = self.access_points[1]
|
|
ap1_network = self.reference_networks[0]["2g"]
|
|
ap2_network = self.reference_networks[1]["5g"]
|
|
# Get & Setup APs' BSSIDs.
|
|
ap1_network["bssid"] = self.bssid_map[0]["2g"][ap1_network["SSID"]]
|
|
ap2_network["bssid"] = self.bssid_map[1]["5g"][ap2_network["SSID"]]
|
|
|
|
# Change 2 APs to same password and SSID
|
|
self.openwrt1.set_ssid(ssid_2g="testSSID")
|
|
self.openwrt2.set_ssid(ssid_5g="testSSID")
|
|
self.openwrt2.set_password(pwd_5g=ap1_network["password"])
|
|
ap1_network["SSID"] = "testSSID"
|
|
ap2_network["SSID"] = "testSSID"
|
|
ap2_network["password"] = ap1_network["password"]
|
|
|
|
self.roaming_from_AP1_and_AP2(ap1_network, ap2_network)
|
|
|
|
@test_tracker_info(uuid="fa1fe3bb-abb9-4d75-88bd-cd88c04073c6")
|
|
def test_roaming_between_psk_withoutPMF_5g(self):
|
|
"""Verify psk without PMF when after roaming with OpenWrtAP
|
|
|
|
Steps:
|
|
1. Configure 2 APs without PMF
|
|
2. Connect DUT to AP1
|
|
3. Roam to AP2
|
|
4. Verify the DUT can connect after roaming
|
|
"""
|
|
# Use OpenWrt as Wi-Fi AP when it's available in testbed.
|
|
asserts.skip_if("OpenWrtAP" not in self.user_params, "OpenWrtAP not in user_params")
|
|
self.configure_openwrt_ap_and_start(wpa_network=True,
|
|
ap_count=2,
|
|
mirror_ap=True,
|
|
ieee80211w=0)
|
|
ap1_network = self.reference_networks[0]["5g"]
|
|
ap2_network = self.reference_networks[1]["5g"]
|
|
# Get & Setup APs' BSSIDs.
|
|
ap1_network["bssid"] = self.bssid_map[0]["5g"][ap1_network["SSID"]]
|
|
ap2_network["bssid"] = self.bssid_map[1]["5g"][ap2_network["SSID"]]
|
|
|
|
self.roaming_from_AP1_and_AP2(ap1_network, ap2_network)
|
|
|
|
@test_tracker_info(uuid="496e048a-3da5-45c4-aa0f-c5bd127eb06f")
|
|
def test_roaming_between_psk_withPMF_5g(self):
|
|
"""Verify psk with PMF when after roaming with OpenWrtAP
|
|
|
|
Steps:
|
|
1. Configure 2 APs with PMF
|
|
2. Connect DUT to AP1
|
|
3. Roam to AP2
|
|
4. Verify the DUT can connect after roaming
|
|
"""
|
|
# Use OpenWrt as Wi-Fi AP when it's available in testbed.
|
|
asserts.skip_if("OpenWrtAP" not in self.user_params, "OpenWrtAP not in user_params")
|
|
self.configure_openwrt_ap_and_start(wpa_network=True,
|
|
ap_count=2,
|
|
mirror_ap=True,
|
|
ieee80211w=2)
|
|
ap1_network = self.reference_networks[0]["5g"]
|
|
ap2_network = self.reference_networks[1]["5g"]
|
|
# Get & Setup APs' BSSIDs.
|
|
ap1_network["bssid"] = self.bssid_map[0]["5g"][ap1_network["SSID"]]
|
|
ap2_network["bssid"] = self.bssid_map[1]["5g"][ap2_network["SSID"]]
|
|
|
|
self.roaming_from_AP1_and_AP2(ap1_network, ap2_network)
|
|
|
|
@test_tracker_info(uuid="524c97c5-4bca-46b0-97f9-aad749768cd8")
|
|
def test_roaming_between_psk_wPMF_to_psk_woPMF_5g(self):
|
|
"""Verify psk with/without PMF when after roaming with OpenWrtAP
|
|
|
|
Steps:
|
|
1. Configure 2 APs without PMF
|
|
2. Configure AP1 with PMF
|
|
3. Connect DUT to AP1
|
|
4. Roam to AP2
|
|
5. Verify the DUT can connect after roaming
|
|
"""
|
|
# Use OpenWrt as Wi-Fi AP when it's available in testbed.
|
|
asserts.skip_if("OpenWrtAP" not in self.user_params, "OpenWrtAP not in user_params")
|
|
self.configure_openwrt_ap_and_start(wpa_network=True,
|
|
ap_count=2,
|
|
mirror_ap=True,
|
|
ieee80211w=0)
|
|
self.openwrt1 = self.access_points[0]
|
|
self.openwrt2 = self.access_points[1]
|
|
ap1_network = self.reference_networks[0]["5g"]
|
|
ap2_network = self.reference_networks[1]["5g"]
|
|
# Get & Setup APs' BSSIDs.
|
|
ap1_network["bssid"] = self.bssid_map[0]["5g"][ap1_network["SSID"]]
|
|
ap2_network["bssid"] = self.bssid_map[1]["5g"][ap2_network["SSID"]]
|
|
|
|
# Configure AP1 to enable PMF.
|
|
self.configure_openwrt_ap_and_start(wpa_network=True,
|
|
ieee80211w=2)
|
|
ap1_network = self.reference_networks[0]["5g"]
|
|
ap1_network["bssid"] = self.bssid_map[0]["5g"][ap1_network["SSID"]]
|
|
|
|
# Change AP2 password and SSID same as AP1.
|
|
self.openwrt2.set_password(pwd_5g=ap1_network["password"])
|
|
self.openwrt2.set_ssid(ssid_5g=ap1_network["SSID"])
|
|
ap2_network["SSID"] = ap1_network["SSID"]
|
|
ap2_network["password"] = ap1_network["password"]
|
|
|
|
self.roaming_from_AP1_and_AP2(ap1_network, ap2_network)
|
|
|
|
@test_tracker_info(uuid="714ceac1-d8af-4679-9385-2c9c6d885634")
|
|
def test_roaming_between_psk_woPMF_to_psk_wPMF_5g(self):
|
|
"""Verify psk without/with PMF when after roaming with OpenWrtAP
|
|
|
|
Steps:
|
|
1. Configure 2 APs with PMF
|
|
2. Configure AP1 without PMF
|
|
3. Connect DUT to AP1
|
|
4. Roam to AP2
|
|
5. Verify the DUT can connect after roaming
|
|
"""
|
|
# Use OpenWrt as Wi-Fi AP when it's available in testbed.
|
|
asserts.skip_if("OpenWrtAP" not in self.user_params, "OpenWrtAP not in user_params")
|
|
self.configure_openwrt_ap_and_start(wpa_network=True,
|
|
ap_count=2,
|
|
mirror_ap=True,
|
|
ieee80211w=2)
|
|
self.openwrt1 = self.access_points[0]
|
|
self.openwrt2 = self.access_points[1]
|
|
ap1_network = self.reference_networks[0]["5g"]
|
|
ap2_network = self.reference_networks[1]["5g"]
|
|
# Get & Setup APs' BSSIDs.
|
|
ap1_network["bssid"] = self.bssid_map[0]["5g"][ap1_network["SSID"]]
|
|
ap2_network["bssid"] = self.bssid_map[1]["5g"][ap2_network["SSID"]]
|
|
|
|
# Configure AP1 to disable PMF.
|
|
self.configure_openwrt_ap_and_start(wpa_network=True,
|
|
ieee80211w=0)
|
|
ap1_network = self.reference_networks[0]["5g"]
|
|
ap1_network["bssid"] = self.bssid_map[0]["5g"][ap1_network["SSID"]]
|
|
|
|
# Change AP2 password and SSID same as AP1.
|
|
self.openwrt2.set_password(pwd_5g=ap1_network["password"])
|
|
self.openwrt2.set_ssid(ssid_5g=ap1_network["SSID"])
|
|
ap2_network["SSID"] = ap1_network["SSID"]
|
|
ap2_network["password"] = ap1_network["password"]
|
|
|
|
self.roaming_from_AP1_and_AP2(ap1_network, ap2_network)
|
|
|
|
@test_tracker_info(uuid="4b201d7b-38ec-49c2-95c3-81cba51ba11d")
|
|
def test_roaming_between_psk_capablePMF_5g(self):
|
|
"""Verify psk capable PMF when after roaming with OpenWrtAP
|
|
|
|
Steps:
|
|
1. Configure 2 APs with capable PMF
|
|
2. Connect DUT to AP1
|
|
3. Roam to AP2
|
|
4. Verify the DUT can connect after roaming
|
|
"""
|
|
# Use OpenWrt as Wi-Fi AP when it's available in testbed.
|
|
asserts.skip_if("OpenWrtAP" not in self.user_params, "OpenWrtAP not in user_params")
|
|
self.configure_openwrt_ap_and_start(wpa_network=True,
|
|
ap_count=2,
|
|
mirror_ap=True,
|
|
ieee80211w=1)
|
|
ap1_network = self.reference_networks[0]["5g"]
|
|
ap2_network = self.reference_networks[1]["5g"]
|
|
# Get & Setup APs' BSSIDs.
|
|
ap1_network["bssid"] = self.bssid_map[0]["5g"][ap1_network["SSID"]]
|
|
ap2_network["bssid"] = self.bssid_map[1]["5g"][ap2_network["SSID"]]
|
|
|
|
self.roaming_from_AP1_and_AP2(ap1_network, ap2_network)
|
|
|
|
@test_tracker_info(uuid="588a9279-1f84-44d2-acbb-051c5ba0bcb1")
|
|
def test_roaming_between_psk_capPMF_to_psk_woPMF_5g(self):
|
|
"""Verify psk capable/without PMF when after roaming with OpenWrtAP
|
|
|
|
Steps:
|
|
1. Configure 2 APs without PMF
|
|
2. Configure AP1 with capable PMF
|
|
3. Connect DUT to AP1
|
|
4. Roam to AP2
|
|
5. Verify the DUT can connect after roaming
|
|
"""
|
|
# Use OpenWrt as Wi-Fi AP when it's available in testbed.
|
|
asserts.skip_if("OpenWrtAP" not in self.user_params, "OpenWrtAP not in user_params")
|
|
self.configure_openwrt_ap_and_start(wpa_network=True,
|
|
ap_count=2,
|
|
mirror_ap=True,
|
|
ieee80211w=0)
|
|
self.openwrt1 = self.access_points[0]
|
|
self.openwrt2 = self.access_points[1]
|
|
ap1_network = self.reference_networks[0]["5g"]
|
|
ap2_network = self.reference_networks[1]["5g"]
|
|
# Get & Setup APs' BSSIDs.
|
|
ap1_network["bssid"] = self.bssid_map[0]["5g"][ap1_network["SSID"]]
|
|
ap2_network["bssid"] = self.bssid_map[1]["5g"][ap2_network["SSID"]]
|
|
|
|
# Configure AP1 to enable capable PMF.
|
|
self.configure_openwrt_ap_and_start(wpa_network=True,
|
|
ieee80211w=1)
|
|
ap1_network = self.reference_networks[0]["5g"]
|
|
ap1_network["bssid"] = self.bssid_map[0]["5g"][ap1_network["SSID"]]
|
|
|
|
# Change AP2 password and SSID same as AP1.
|
|
self.openwrt2.set_password(pwd_5g=ap1_network["password"])
|
|
self.openwrt2.set_ssid(ssid_5g=ap1_network["SSID"])
|
|
ap2_network["SSID"] = ap1_network["SSID"]
|
|
ap2_network["password"] = ap1_network["password"]
|
|
|
|
self.roaming_from_AP1_and_AP2(ap1_network, ap2_network)
|
|
|
|
@test_tracker_info(uuid="d239b56d-515c-4589-b63a-ebce62c321af")
|
|
def test_roaming_between_psk_capPMF_to_psk_wPMF_5g(self):
|
|
"""Verify psk capable/with PMF when after roaming with OpenWrtAP
|
|
|
|
Steps:
|
|
1. Configure 2 APs with PMF
|
|
2. Configure AP1 with capable PMF
|
|
3. Connect DUT to AP1
|
|
4. Roam to AP2
|
|
5. Verify the DUT can connect after roaming
|
|
"""
|
|
# Use OpenWrt as Wi-Fi AP when it's available in testbed.
|
|
asserts.skip_if("OpenWrtAP" not in self.user_params, "OpenWrtAP not in user_params")
|
|
self.configure_openwrt_ap_and_start(wpa_network=True,
|
|
ap_count=2,
|
|
mirror_ap=True,
|
|
ieee80211w=2)
|
|
self.openwrt1 = self.access_points[0]
|
|
self.openwrt2 = self.access_points[1]
|
|
ap1_network = self.reference_networks[0]["5g"]
|
|
ap2_network = self.reference_networks[1]["5g"]
|
|
# Get & Setup APs' BSSIDs.
|
|
ap1_network["bssid"] = self.bssid_map[0]["5g"][ap1_network["SSID"]]
|
|
ap2_network["bssid"] = self.bssid_map[1]["5g"][ap2_network["SSID"]]
|
|
|
|
# Configure AP1 to enable capable PMF.
|
|
self.configure_openwrt_ap_and_start(wpa_network=True,
|
|
ieee80211w=1)
|
|
ap1_network = self.reference_networks[0]["5g"]
|
|
ap1_network["bssid"] = self.bssid_map[0]["5g"][ap1_network["SSID"]]
|
|
|
|
# Change AP2 password and SSID same as AP1.
|
|
self.openwrt2.set_password(pwd_5g=ap1_network["password"])
|
|
self.openwrt2.set_ssid(ssid_5g=ap1_network["SSID"])
|
|
ap2_network["SSID"] = ap1_network["SSID"]
|
|
ap2_network["password"] = ap1_network["password"]
|
|
|
|
self.roaming_from_AP1_and_AP2(ap1_network, ap2_network)
|
|
|
|
@test_tracker_info(uuid="57ec9401-b336-40cb-bc46-c2b4cfc22516")
|
|
def test_roaming_between_psk_wPMF_to_psk_capPMF_5g(self):
|
|
"""Verify psk with/capable PMF when after roaming with OpenWrtAP
|
|
|
|
Steps:
|
|
1. Configure 2 APs with capable PMF
|
|
2. Configure AP1 with PMF
|
|
3. Connect DUT to AP1
|
|
4. Roam to AP2
|
|
5. Verify the DUT can connect after roaming
|
|
"""
|
|
# Use OpenWrt as Wi-Fi AP when it's available in testbed.
|
|
asserts.skip_if("OpenWrtAP" not in self.user_params, "OpenWrtAP not in user_params")
|
|
self.configure_openwrt_ap_and_start(wpa_network=True,
|
|
ap_count=2,
|
|
mirror_ap=True,
|
|
ieee80211w=1)
|
|
self.openwrt1 = self.access_points[0]
|
|
self.openwrt2 = self.access_points[1]
|
|
ap1_network = self.reference_networks[0]["5g"]
|
|
ap2_network = self.reference_networks[1]["5g"]
|
|
# Get & Setup APs' BSSIDs.
|
|
ap1_network["bssid"] = self.bssid_map[0]["5g"][ap1_network["SSID"]]
|
|
ap2_network["bssid"] = self.bssid_map[1]["5g"][ap2_network["SSID"]]
|
|
|
|
# Configure AP1 to enable PMF.
|
|
self.configure_openwrt_ap_and_start(wpa_network=True,
|
|
ieee80211w=2)
|
|
ap1_network = self.reference_networks[0]["5g"]
|
|
ap1_network["bssid"] = self.bssid_map[0]["5g"][ap1_network["SSID"]]
|
|
|
|
# Change AP2 password and SSID same as AP1.
|
|
self.openwrt2.set_password(pwd_5g=ap1_network["password"])
|
|
self.openwrt2.set_ssid(ssid_5g=ap1_network["SSID"])
|
|
ap2_network["SSID"] = ap1_network["SSID"]
|
|
ap2_network["password"] = ap1_network["password"]
|
|
|
|
self.roaming_from_AP1_and_AP2(ap1_network, ap2_network)
|
|
|
|
@test_tracker_info(uuid="a32d24f0-36cc-41f0-90b4-db74973db29f")
|
|
def test_roaming_between_psk_woPMF_to_psk_capPMF_5g(self):
|
|
"""Verify psk without/capable PMF when after roaming with OpenWrtAP
|
|
|
|
Steps:
|
|
1. Configure 2 APs with capable PMF
|
|
2. Configure AP1 without PMF
|
|
3. Connect DUT to AP1
|
|
4. Roam to AP2
|
|
5. Verify the DUT can connect after roaming
|
|
"""
|
|
# Use OpenWrt as Wi-Fi AP when it's available in testbed.
|
|
asserts.skip_if("OpenWrtAP" not in self.user_params, "OpenWrtAP not in user_params")
|
|
self.configure_openwrt_ap_and_start(wpa_network=True,
|
|
ap_count=2,
|
|
mirror_ap=True,
|
|
ieee80211w=1)
|
|
self.openwrt1 = self.access_points[0]
|
|
self.openwrt2 = self.access_points[1]
|
|
ap1_network = self.reference_networks[0]["5g"]
|
|
ap2_network = self.reference_networks[1]["5g"]
|
|
# Get & Setup APs' BSSIDs.
|
|
ap1_network["bssid"] = self.bssid_map[0]["5g"][ap1_network["SSID"]]
|
|
ap2_network["bssid"] = self.bssid_map[1]["5g"][ap2_network["SSID"]]
|
|
|
|
# Configure AP1 to disable PMF.
|
|
self.configure_openwrt_ap_and_start(wpa_network=True,
|
|
ieee80211w=0)
|
|
ap1_network = self.reference_networks[0]["5g"]
|
|
ap1_network["bssid"] = self.bssid_map[0]["5g"][ap1_network["SSID"]]
|
|
|
|
# Change AP2 password and SSID same as AP1.
|
|
self.openwrt2.set_password(pwd_5g=ap1_network["password"])
|
|
self.openwrt2.set_ssid(ssid_5g=ap1_network["SSID"])
|
|
ap2_network["SSID"] = ap1_network["SSID"]
|
|
ap2_network["password"] = ap1_network["password"]
|
|
|
|
self.roaming_from_AP1_and_AP2(ap1_network, ap2_network)
|
|
|
|
@test_tracker_info(uuid="44f45dc9-e85c-419d-bbab-d02e9548a377")
|
|
def test_roaming_between_psk_to_saemixed_woPMF_5g(self):
|
|
"""Verify psk to saemixed without PMF when after roaming with OpenWrtAP
|
|
|
|
Steps:
|
|
1. Configure 2 APs security type to saemixed without PMF
|
|
2. Configure AP1 security type to psk
|
|
3. Connect DUT to AP1
|
|
4. Roam to AP2
|
|
5. Verify the DUT can connect after roaming
|
|
"""
|
|
# Use OpenWrt as Wi-Fi AP when it's available in testbed.
|
|
asserts.skip_if("OpenWrtAP" not in self.user_params, "OpenWrtAP not in user_params")
|
|
self.configure_openwrt_ap_and_start(saemixed_network=True,
|
|
ap_count=2,
|
|
mirror_ap=True,
|
|
ieee80211w=0)
|
|
self.openwrt1 = self.access_points[0]
|
|
self.openwrt2 = self.access_points[1]
|
|
ap1_network = self.saemixed_networks[0]["5g"]
|
|
ap2_network = self.saemixed_networks[1]["5g"]
|
|
# Get & Setup APs' BSSIDs.
|
|
ap1_network["bssid"] = self.bssid_map[0]["5g"][ap1_network["SSID"]]
|
|
ap2_network["bssid"] = self.bssid_map[1]["5g"][ap2_network["SSID"]]
|
|
|
|
# Configure AP1 security type.
|
|
self.configure_openwrt_ap_and_start(wpa_network=True)
|
|
ap1_network = self.reference_networks[0]["5g"]
|
|
ap1_network["bssid"] = self.bssid_map[0]["5g"][ap1_network["SSID"]]
|
|
|
|
# Change AP2 password and SSID same as AP1.
|
|
self.openwrt2.set_password(pwd_5g=ap1_network["password"])
|
|
self.openwrt2.set_ssid(ssid_5g=ap1_network["SSID"])
|
|
ap2_network["SSID"] = ap1_network["SSID"]
|
|
ap2_network["password"] = ap1_network["password"]
|
|
|
|
self.roaming_from_AP1_and_AP2(ap1_network, ap2_network)
|
|
|
|
@test_tracker_info(uuid="9827f3b3-51cd-406b-ba2b-3ef4a9df7378")
|
|
def test_roaming_between_psk_to_saemixed_wPMF_5g(self):
|
|
"""Verify psk to saemixed with PMF when after roaming with OpenWrtAP
|
|
|
|
Steps:
|
|
1. Configure 2 APs security type to saemixed with PMF
|
|
2. Configure AP1 security type to psk
|
|
3. Connect DUT to AP1
|
|
4. Roam to AP2
|
|
5. Verify the DUT can connect after roaming
|
|
"""
|
|
# Use OpenWrt as Wi-Fi AP when it's available in testbed.
|
|
asserts.skip_if("OpenWrtAP" not in self.user_params, "OpenWrtAP not in user_params")
|
|
self.configure_openwrt_ap_and_start(saemixed_network=True,
|
|
ap_count=2,
|
|
mirror_ap=True,
|
|
ieee80211w=2)
|
|
self.openwrt1 = self.access_points[0]
|
|
self.openwrt2 = self.access_points[1]
|
|
ap1_network = self.saemixed_networks[0]["5g"]
|
|
ap2_network = self.saemixed_networks[1]["5g"]
|
|
# Get & Setup APs' BSSIDs.
|
|
ap1_network["bssid"] = self.bssid_map[0]["5g"][ap1_network["SSID"]]
|
|
ap2_network["bssid"] = self.bssid_map[1]["5g"][ap2_network["SSID"]]
|
|
|
|
# Configure AP1 security type.
|
|
self.configure_openwrt_ap_and_start(wpa_network=True)
|
|
ap1_network = self.reference_networks[0]["5g"]
|
|
ap1_network["bssid"] = self.bssid_map[0]["5g"][ap1_network["SSID"]]
|
|
|
|
# Change AP2 password and SSID same as AP1.
|
|
self.openwrt2.set_password(pwd_5g=ap1_network["password"])
|
|
self.openwrt2.set_ssid(ssid_5g=ap1_network["SSID"])
|
|
ap2_network["SSID"] = ap1_network["SSID"]
|
|
ap2_network["password"] = ap1_network["password"]
|
|
|
|
self.roaming_from_AP1_and_AP2(ap1_network, ap2_network)
|
|
|
|
@test_tracker_info(uuid="037602b1-2ce8-4dbb-b46a-00e0a582d976")
|
|
def test_roaming_between_saemixed_withoutPMF_5g(self):
|
|
"""Verify saemixed without PMF when after roaming with OpenWrtAP
|
|
|
|
Steps:
|
|
1. Configure 2 APs to saemixed without PMF
|
|
2. Connect DUT to AP1
|
|
3. Roam to AP2
|
|
4. Verify the DUT can connect after roaming
|
|
"""
|
|
# Use OpenWrt as Wi-Fi AP when it's available in testbed.
|
|
asserts.skip_if("OpenWrtAP" not in self.user_params, "OpenWrtAP not in user_params")
|
|
self.configure_openwrt_ap_and_start(saemixed_network=True,
|
|
ap_count=2,
|
|
mirror_ap=True,
|
|
ieee80211w=0)
|
|
ap1_network = self.saemixed_networks[0]["5g"]
|
|
ap2_network = self.saemixed_networks[1]["5g"]
|
|
# Get & Setup APs' BSSIDs.
|
|
ap1_network["bssid"] = self.bssid_map[0]["5g"][ap1_network["SSID"]]
|
|
ap2_network["bssid"] = self.bssid_map[1]["5g"][ap2_network["SSID"]]
|
|
|
|
self.roaming_from_AP1_and_AP2(ap1_network, ap2_network)
|
|
|
|
@test_tracker_info(uuid="94514f72-9e90-4d73-bba5-65b95e721cd8")
|
|
def test_roaming_between_saemixed_withPMF_5g(self):
|
|
"""Verify saemixed with PMF when after roaming with OpenWrtAP
|
|
|
|
Steps:
|
|
1. Configure 2 APs to saemixed with PMF
|
|
2. Connect DUT to AP1
|
|
3. Roam to AP2
|
|
4. Verify the DUT can connect after roaming
|
|
"""
|
|
# Use OpenWrt as Wi-Fi AP when it's available in testbed.
|
|
asserts.skip_if("OpenWrtAP" not in self.user_params, "OpenWrtAP not in user_params")
|
|
self.configure_openwrt_ap_and_start(saemixed_network=True,
|
|
ap_count=2,
|
|
mirror_ap=True,
|
|
ieee80211w=2)
|
|
ap1_network = self.saemixed_networks[0]["5g"]
|
|
ap2_network = self.saemixed_networks[1]["5g"]
|
|
# Get & Setup APs' BSSIDs.
|
|
ap1_network["bssid"] = self.bssid_map[0]["5g"][ap1_network["SSID"]]
|
|
ap2_network["bssid"] = self.bssid_map[1]["5g"][ap2_network["SSID"]]
|
|
|
|
self.roaming_from_AP1_and_AP2(ap1_network, ap2_network)
|
|
|
|
@test_tracker_info(uuid="05834382-5c3f-48d9-a6e6-8794ebf176f8")
|
|
def test_roaming_between_saemixed_woPMF_to_saemixed_wPMF_5g(self):
|
|
"""Verify saemixed without/with PMF when after roaming with OpenWrtAP
|
|
|
|
Steps:
|
|
1. Configure 2 APs to saemixed with PMF
|
|
2. Configure AP1 to saemixed without PMF
|
|
3. Connect DUT to AP1
|
|
4. Roam to AP2
|
|
5. Verify the DUT can connect after roaming
|
|
"""
|
|
# Use OpenWrt as Wi-Fi AP when it's available in testbed.
|
|
asserts.skip_if("OpenWrtAP" not in self.user_params, "OpenWrtAP not in user_params")
|
|
self.configure_openwrt_ap_and_start(saemixed_network=True,
|
|
ap_count=2,
|
|
mirror_ap=True,
|
|
ieee80211w=2)
|
|
self.openwrt1 = self.access_points[0]
|
|
self.openwrt2 = self.access_points[1]
|
|
ap1_network = self.saemixed_networks[0]["5g"]
|
|
ap2_network = self.saemixed_networks[1]["5g"]
|
|
# Get & Setup APs' BSSIDs.
|
|
ap1_network["bssid"] = self.bssid_map[0]["5g"][ap1_network["SSID"]]
|
|
ap2_network["bssid"] = self.bssid_map[1]["5g"][ap2_network["SSID"]]
|
|
|
|
# Configure AP1 to disable PMF.
|
|
self.configure_openwrt_ap_and_start(saemixed_network=True,
|
|
ieee80211w=0)
|
|
ap1_network = self.saemixed_networks[0]["5g"]
|
|
ap1_network["bssid"] = self.bssid_map[0]["5g"][ap1_network["SSID"]]
|
|
|
|
# Change AP2 password and SSID same as AP1.
|
|
self.openwrt2.set_password(pwd_5g=ap1_network["password"])
|
|
self.openwrt2.set_ssid(ssid_5g=ap1_network["SSID"])
|
|
ap2_network["SSID"] = ap1_network["SSID"]
|
|
ap2_network["password"] = ap1_network["password"]
|
|
|
|
self.roaming_from_AP1_and_AP2(ap1_network, ap2_network)
|
|
|
|
@test_tracker_info(uuid="4d7cba89-40f1-4a2a-891d-4bb757f73442")
|
|
def test_roaming_between_saemixed_wPMF_to_saemixed_woPMF_5g(self):
|
|
"""Verify saemixed with/without PMF when after roaming with OpenWrtAP
|
|
|
|
Steps:
|
|
1. Configure 2 APs to saemixed without PMF
|
|
2. Configure AP1 to saemixed with PMF
|
|
3. Connect DUT to AP1
|
|
4. Roam to AP2
|
|
5. Verify the DUT can connect after roaming
|
|
"""
|
|
# Use OpenWrt as Wi-Fi AP when it's available in testbed.
|
|
asserts.skip_if("OpenWrtAP" not in self.user_params, "OpenWrtAP not in user_params")
|
|
self.configure_openwrt_ap_and_start(saemixed_network=True,
|
|
ap_count=2,
|
|
mirror_ap=True,
|
|
ieee80211w=0)
|
|
self.openwrt1 = self.access_points[0]
|
|
self.openwrt2 = self.access_points[1]
|
|
ap1_network = self.saemixed_networks[0]["5g"]
|
|
ap2_network = self.saemixed_networks[1]["5g"]
|
|
# Get & Setup APs' BSSIDs.
|
|
ap1_network["bssid"] = self.bssid_map[0]["5g"][ap1_network["SSID"]]
|
|
ap2_network["bssid"] = self.bssid_map[1]["5g"][ap2_network["SSID"]]
|
|
|
|
# Configure AP1 to enable PMF.
|
|
self.configure_openwrt_ap_and_start(saemixed_network=True,
|
|
ieee80211w=2)
|
|
ap1_network = self.saemixed_networks[0]["5g"]
|
|
ap1_network["bssid"] = self.bssid_map[0]["5g"][ap1_network["SSID"]]
|
|
|
|
# Change AP2 password and SSID same as AP1.
|
|
self.openwrt2.set_password(pwd_5g=ap1_network["password"])
|
|
self.openwrt2.set_ssid(ssid_5g=ap1_network["SSID"])
|
|
ap2_network["SSID"] = ap1_network["SSID"]
|
|
ap2_network["password"] = ap1_network["password"]
|
|
|
|
self.roaming_from_AP1_and_AP2(ap1_network, ap2_network)
|
|
|
|
@test_tracker_info(uuid="57caaf0a-5251-4191-b4d1-de31d7c12295")
|
|
def test_roaming_between_sae_to_saemixed_woPMF_5g(self):
|
|
"""Verify sae to saemixed without PMF when after roaming with OpenWrtAP
|
|
|
|
Steps:
|
|
1. Configure 2 APs security type to saemixed without PMF
|
|
2. Configure AP1 security type to sae
|
|
3. Connect DUT to AP1
|
|
4. Roam to AP2
|
|
5. Verify the DUT can connect after roaming
|
|
"""
|
|
# Use OpenWrt as Wi-Fi AP when it's available in testbed.
|
|
asserts.skip_if("OpenWrtAP" not in self.user_params, "OpenWrtAP not in user_params")
|
|
self.configure_openwrt_ap_and_start(saemixed_network=True,
|
|
ap_count=2,
|
|
mirror_ap=True,
|
|
ieee80211w=0)
|
|
self.openwrt1 = self.access_points[0]
|
|
self.openwrt2 = self.access_points[1]
|
|
ap1_network = self.saemixed_networks[0]["5g"]
|
|
ap2_network = self.saemixed_networks[1]["5g"]
|
|
# Get & Setup APs' BSSIDs.
|
|
ap1_network["bssid"] = self.bssid_map[0]["5g"][ap1_network["SSID"]]
|
|
ap2_network["bssid"] = self.bssid_map[1]["5g"][ap2_network["SSID"]]
|
|
|
|
# Configure AP1 security type.
|
|
self.configure_openwrt_ap_and_start(sae_network=True)
|
|
ap1_network = self.sae_networks[0]["5g"]
|
|
ap1_network["bssid"] = self.bssid_map[0]["5g"][ap1_network["SSID"]]
|
|
|
|
# Change AP2 password and SSID same as AP1.
|
|
self.openwrt2.set_password(pwd_5g=ap1_network["password"])
|
|
self.openwrt2.set_ssid(ssid_5g=ap1_network["SSID"])
|
|
ap2_network["SSID"] = ap1_network["SSID"]
|
|
ap2_network["password"] = ap1_network["password"]
|
|
|
|
self.roaming_from_AP1_and_AP2(ap1_network, ap2_network)
|
|
|
|
@test_tracker_info(uuid="0f5ca9d9-ef40-4a95-bf55-4c78358a9a3e")
|
|
def test_roaming_between_sae_to_saemixed_wPMF_5g(self):
|
|
"""Verify sae to saemixed with PMF when after roaming with OpenWrtAP
|
|
|
|
Steps:
|
|
1. Configure 2 APs security type to saemixed with PMF
|
|
2. Configure AP1 security type to sae
|
|
3. Connect DUT to AP1
|
|
4. Roam to AP2
|
|
5. Verify the DUT can connect after roaming
|
|
"""
|
|
# Use OpenWrt as Wi-Fi AP when it's available in testbed.
|
|
asserts.skip_if("OpenWrtAP" not in self.user_params, "OpenWrtAP not in user_params")
|
|
self.configure_openwrt_ap_and_start(saemixed_network=True,
|
|
ap_count=2,
|
|
mirror_ap=True,
|
|
ieee80211w=2)
|
|
self.openwrt1 = self.access_points[0]
|
|
self.openwrt2 = self.access_points[1]
|
|
ap1_network = self.saemixed_networks[0]["5g"]
|
|
ap2_network = self.saemixed_networks[1]["5g"]
|
|
# Get & Setup APs' BSSIDs.
|
|
ap1_network["bssid"] = self.bssid_map[0]["5g"][ap1_network["SSID"]]
|
|
ap2_network["bssid"] = self.bssid_map[1]["5g"][ap2_network["SSID"]]
|
|
|
|
# Configure AP1 security type.
|
|
self.configure_openwrt_ap_and_start(sae_network=True)
|
|
ap1_network = self.sae_networks[0]["5g"]
|
|
ap1_network["bssid"] = self.bssid_map[0]["5g"][ap1_network["SSID"]]
|
|
|
|
# Change AP2 password and SSID same as AP1.
|
|
self.openwrt2.set_password(pwd_5g=ap1_network["password"])
|
|
self.openwrt2.set_ssid(ssid_5g=ap1_network["SSID"])
|
|
ap2_network["SSID"] = ap1_network["SSID"]
|
|
ap2_network["password"] = ap1_network["password"]
|
|
|
|
self.roaming_from_AP1_and_AP2(ap1_network, ap2_network)
|
|
|
|
@test_tracker_info(uuid="e875233f-d242-4ddd-b357-8e3e215af050")
|
|
def test_roaming_between_psk_to_sae_5g(self):
|
|
"""Verify fail with diff security type after roaming with OpenWrtAP
|
|
|
|
This test will pass after design change but this is not seamless roaming.
|
|
Steps:
|
|
1. Configure 2 APs security type to sae
|
|
2. Configure AP1 security type to psk
|
|
3. Connect DUT to AP1
|
|
4. Roam to AP2
|
|
5. Verify the DUT connect to AP2 after roaming
|
|
"""
|
|
# Use OpenWrt as Wi-Fi AP when it's available in testbed.
|
|
asserts.skip_if("OpenWrtAP" not in self.user_params, "OpenWrtAP not in user_params")
|
|
self.configure_openwrt_ap_and_start(sae_network=True,
|
|
ap_count=2,
|
|
mirror_ap=True)
|
|
self.openwrt1 = self.access_points[0]
|
|
self.openwrt2 = self.access_points[1]
|
|
ap1_network = self.sae_networks[0]["5g"]
|
|
ap2_network = self.sae_networks[1]["5g"]
|
|
# Get & Setup APs' BSSIDs.
|
|
ap1_network["bssid"] = self.bssid_map[0]["5g"][ap1_network["SSID"]]
|
|
ap2_network["bssid"] = self.bssid_map[1]["5g"][ap2_network["SSID"]]
|
|
|
|
# Configure AP1 security type.
|
|
self.configure_openwrt_ap_and_start(wpa_network=True)
|
|
ap1_network = self.reference_networks[0]["5g"]
|
|
ap1_network["bssid"] = self.bssid_map[0]["5g"][ap1_network["SSID"]]
|
|
|
|
# Change AP2 password and SSID same as AP1.
|
|
self.openwrt2.set_password(pwd_5g=ap1_network["password"])
|
|
self.openwrt2.set_ssid(ssid_5g=ap1_network["SSID"])
|
|
ap2_network["SSID"] = ap1_network["SSID"]
|
|
ap2_network["password"] = ap1_network["password"]
|
|
|
|
# DUT roaming from AP1 to AP2 with diff security type.
|
|
# Expect device disconnect from AP1 and connect to AP2 due to
|
|
# saved network contain AP2.
|
|
self.roaming_from_AP1_and_AP2(ap1_network, ap2_network)
|
|
|
|
@test_tracker_info(uuid="76098016-56a4-4b92-8c13-7333a21c9a1b")
|
|
def test_roaming_between_psk_to_saemixed_2g(self):
|
|
"""Verify psk to saemixed with 11n when after roaming with OpenWrtAP
|
|
|
|
Steps:
|
|
1. Configure 2 APs security type to saemixed with 11n mode
|
|
2. Configure AP1 security type to psk with 11n mode
|
|
3. Connect DUT to AP1
|
|
4. Roam to AP2
|
|
5. Verify the DUT can connect after roaming
|
|
"""
|
|
# Use OpenWrt as Wi-Fi AP when it's available in testbed.
|
|
asserts.skip_if("OpenWrtAP" not in self.user_params, "OpenWrtAP not in user_params")
|
|
self.configure_openwrt_ap_and_start(saemixed_network=True,
|
|
ap_count=2,
|
|
mirror_ap=True)
|
|
self.openwrt1 = self.access_points[0]
|
|
self.openwrt2 = self.access_points[1]
|
|
ap1_network = self.saemixed_networks[0]["2g"]
|
|
ap2_network = self.saemixed_networks[1]["2g"]
|
|
# Get & Setup APs' BSSIDs.
|
|
ap1_network["bssid"] = self.bssid_map[0]["2g"][ap1_network["SSID"]]
|
|
ap2_network["bssid"] = self.bssid_map[1]["2g"][ap2_network["SSID"]]
|
|
|
|
# Configure AP1 security type.
|
|
self.configure_openwrt_ap_and_start(wpa_network=True)
|
|
ap1_network = self.reference_networks[0]["2g"]
|
|
ap1_network["bssid"] = self.bssid_map[0]["2g"][ap1_network["SSID"]]
|
|
|
|
# Change AP2 password and SSID same as AP1.
|
|
self.openwrt2.set_password(pwd_2g=ap1_network["password"])
|
|
self.openwrt2.set_ssid(ssid_2g=ap1_network["SSID"])
|
|
ap2_network["SSID"] = ap1_network["SSID"]
|
|
ap2_network["password"] = ap1_network["password"]
|
|
|
|
self.roaming_from_AP1_and_AP2(ap1_network, ap2_network)
|
|
|
|
@test_tracker_info(uuid="2caf668d-6b05-4ba5-ac6b-1ec989fdf9ff")
|
|
def test_roaming_between_psk1_to_saemixed_2g(self):
|
|
"""Verify psk1 to saemixed with 11n when after roaming with OpenWrtAP
|
|
|
|
Steps:
|
|
1. Configure 2 APs security type to saemixed with 11n mode
|
|
2. Configure AP1 security type to psk1 with 11n mode
|
|
3. Connect DUT to AP1
|
|
4. Roam to AP2
|
|
5. Verify the DUT can connect after roaming
|
|
"""
|
|
# Use OpenWrt as Wi-Fi AP when it's available in testbed.
|
|
asserts.skip_if("OpenWrtAP" not in self.user_params, "OpenWrtAP not in user_params")
|
|
self.configure_openwrt_ap_and_start(saemixed_network=True,
|
|
ap_count=2,
|
|
mirror_ap=True)
|
|
self.openwrt1 = self.access_points[0]
|
|
self.openwrt2 = self.access_points[1]
|
|
ap1_network = self.saemixed_networks[0]["2g"]
|
|
ap2_network = self.saemixed_networks[1]["2g"]
|
|
# Get & Setup APs' BSSIDs.
|
|
ap1_network["bssid"] = self.bssid_map[0]["2g"][ap1_network["SSID"]]
|
|
ap2_network["bssid"] = self.bssid_map[1]["2g"][ap2_network["SSID"]]
|
|
|
|
# Configure AP1 security type.
|
|
self.configure_openwrt_ap_and_start(wpa1_network=True)
|
|
ap1_network = self.wpa1_networks[0]["2g"]
|
|
ap1_network["bssid"] = self.bssid_map[0]["2g"][ap1_network["SSID"]]
|
|
|
|
# Change AP2 password and SSID same as AP1.
|
|
self.openwrt2.set_password(pwd_2g=ap1_network["password"])
|
|
self.openwrt2.set_ssid(ssid_2g=ap1_network["SSID"])
|
|
ap2_network["SSID"] = ap1_network["SSID"]
|
|
ap2_network["password"] = ap1_network["password"]
|
|
|
|
self.roaming_from_AP1_and_AP2(ap1_network, ap2_network)
|
|
|
|
@test_tracker_info(uuid="cc8781ec-12fb-47a4-86d4-80d13231c75d")
|
|
def test_connect_to_wpa2_psk_2g_80211r(self):
|
|
"""Test WPA2-PSK 802.11r 2G connectivity ant roaming."""
|
|
if "OpenWrtAP" in self.user_params:
|
|
self.openwrt1 = self.access_points[0]
|
|
self.openwrt2 = self.access_points[1]
|
|
self.configure_openwrt_ap_and_start(wpa_network=True,
|
|
ap_count=2,
|
|
mirror_ap=True)
|
|
ap1_network = self.reference_networks[0]["2g"]
|
|
ap2_network = self.reference_networks[1]["2g"]
|
|
ap1_network["bssid"] = self.bssid_map[0]["2g"][ap1_network["SSID"]]
|
|
ap2_network["bssid"] = self.bssid_map[1]["2g"][ap2_network["SSID"]]
|
|
|
|
md = self.openwrt1.generate_mobility_domain()
|
|
self.openwrt1.enable_80211r(OpenWrtWifiSetting.IFACE_2G, md)
|
|
self.openwrt2.enable_80211r(OpenWrtWifiSetting.IFACE_2G, md)
|
|
self.roaming_from_AP1_and_AP2(ap1_network, ap2_network)
|
|
|
|
@test_tracker_info(uuid="8b0ee65e-bba2-4786-a8b9-8990316d123d")
|
|
def test_connect_to_wpa2_psk_5g_80211r(self):
|
|
"""Test WPA2-PSK 802.11r 5G connectivity and roaming."""
|
|
if "OpenWrtAP" in self.user_params:
|
|
self.openwrt1 = self.access_points[0]
|
|
self.openwrt2 = self.access_points[1]
|
|
self.configure_openwrt_ap_and_start(wpa_network=True,
|
|
ap_count=2,
|
|
mirror_ap=True)
|
|
ap1_network = self.reference_networks[0]["5g"]
|
|
ap2_network = self.reference_networks[1]["5g"]
|
|
ap1_network["bssid"] = self.bssid_map[0]["5g"][ap1_network["SSID"]]
|
|
ap2_network["bssid"] = self.bssid_map[1]["5g"][ap2_network["SSID"]]
|
|
|
|
md = self.openwrt1.generate_mobility_domain()
|
|
self.openwrt1.enable_80211r(OpenWrtWifiSetting.IFACE_5G, md)
|
|
self.openwrt2.enable_80211r(OpenWrtWifiSetting.IFACE_5G, md)
|
|
self.roaming_from_AP1_and_AP2(ap1_network, ap2_network)
|