auto-t: add a no candidate test to testAPRoam

This tests the new behavior where the roam request does not
indicate disassociation is imminent. In this case if no
candidates are found IWD should not roam.
This commit is contained in:
James Prestwood 2022-09-28 09:36:37 -07:00 committed by Denis Kenzior
parent cd258df337
commit 174e9f2fe9
1 changed files with 24 additions and 19 deletions

View File

@ -12,11 +12,7 @@ from hostapd import HostapdCLI
class Test(unittest.TestCase):
def test_connection_success(self):
bss_hostapd = [ HostapdCLI(config='ssid1.conf'),
HostapdCLI(config='ssid2.conf'),
HostapdCLI(config='ssid3.conf') ]
def validate(self, expect_roam=True):
wd = IWD()
devices = wd.list_devices(1)
@ -29,38 +25,47 @@ class Test(unittest.TestCase):
condition = 'not obj.connected'
wd.wait_for_object_condition(ordered_network.network_object, condition)
device.connect_bssid(bss_hostapd[0].bssid)
device.connect_bssid(self.bss_hostapd[0].bssid)
condition = 'obj.state == DeviceState.connected'
wd.wait_for_object_condition(device, condition)
bss_hostapd[0].wait_for_event('AP-STA-CONNECTED')
self.bss_hostapd[0].wait_for_event('AP-STA-CONNECTED')
self.assertFalse(bss_hostapd[1].list_sta())
self.assertFalse(self.bss_hostapd[1].list_sta())
bss_hostapd[0].send_bss_transition(device.address,
[(bss_hostapd[1].bssid, '8f0000005102060603000000')])
self.bss_hostapd[0].send_bss_transition(device.address,
[(self.bss_hostapd[1].bssid, '8f0000005102060603000000')],
disassoc_imminent=expect_roam)
condition = 'obj.state == DeviceState.roaming'
wd.wait_for_object_condition(device, condition)
if expect_roam:
from_condition = 'obj.state == DeviceState.roaming'
to_condition = 'obj.state == DeviceState.connected'
wd.wait_for_object_change(device, from_condition, to_condition)
condition = 'obj.state != DeviceState.roaming'
wd.wait_for_object_condition(device, condition)
condition = 'obj.state == DeviceState.connected'
wd.wait_for_object_condition(device, condition)
bss_hostapd[1].wait_for_event('AP-STA-CONNECTED %s' % device.address)
self.bss_hostapd[1].wait_for_event('AP-STA-CONNECTED %s' % device.address)
else:
device.wait_for_event("no-roam-candidates")
device.disconnect()
condition = 'not obj.connected'
wd.wait_for_object_condition(ordered_network.network_object, condition)
def test_disassoc_imminent(self):
self.validate(expect_roam=True)
def test_no_candidates(self):
self.validate(expect_roam=False)
@classmethod
def setUpClass(cls):
IWD.copy_to_storage('TestAPRoam.psk')
cls.bss_hostapd = [ HostapdCLI(config='ssid1.conf'),
HostapdCLI(config='ssid2.conf'),
HostapdCLI(config='ssid3.conf') ]
@classmethod
def tearDownClass(cls):
IWD.clear_storage()