mirror of
https://git.kernel.org/pub/scm/network/wireless/iwd.git
synced 2024-11-22 06:29:23 +01:00
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:
parent
cd258df337
commit
174e9f2fe9
@ -12,11 +12,7 @@ from hostapd import HostapdCLI
|
|||||||
|
|
||||||
class Test(unittest.TestCase):
|
class Test(unittest.TestCase):
|
||||||
|
|
||||||
def test_connection_success(self):
|
def validate(self, expect_roam=True):
|
||||||
bss_hostapd = [ HostapdCLI(config='ssid1.conf'),
|
|
||||||
HostapdCLI(config='ssid2.conf'),
|
|
||||||
HostapdCLI(config='ssid3.conf') ]
|
|
||||||
|
|
||||||
wd = IWD()
|
wd = IWD()
|
||||||
|
|
||||||
devices = wd.list_devices(1)
|
devices = wd.list_devices(1)
|
||||||
@ -29,38 +25,47 @@ class Test(unittest.TestCase):
|
|||||||
condition = 'not obj.connected'
|
condition = 'not obj.connected'
|
||||||
wd.wait_for_object_condition(ordered_network.network_object, condition)
|
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'
|
condition = 'obj.state == DeviceState.connected'
|
||||||
wd.wait_for_object_condition(device, condition)
|
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,
|
self.bss_hostapd[0].send_bss_transition(device.address,
|
||||||
[(bss_hostapd[1].bssid, '8f0000005102060603000000')])
|
[(self.bss_hostapd[1].bssid, '8f0000005102060603000000')],
|
||||||
|
disassoc_imminent=expect_roam)
|
||||||
|
|
||||||
condition = 'obj.state == DeviceState.roaming'
|
if expect_roam:
|
||||||
wd.wait_for_object_condition(device, condition)
|
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'
|
self.bss_hostapd[1].wait_for_event('AP-STA-CONNECTED %s' % device.address)
|
||||||
wd.wait_for_object_condition(device, condition)
|
else:
|
||||||
|
device.wait_for_event("no-roam-candidates")
|
||||||
condition = 'obj.state == DeviceState.connected'
|
|
||||||
wd.wait_for_object_condition(device, condition)
|
|
||||||
|
|
||||||
bss_hostapd[1].wait_for_event('AP-STA-CONNECTED %s' % device.address)
|
|
||||||
|
|
||||||
device.disconnect()
|
device.disconnect()
|
||||||
|
|
||||||
condition = 'not obj.connected'
|
condition = 'not obj.connected'
|
||||||
wd.wait_for_object_condition(ordered_network.network_object, condition)
|
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
|
@classmethod
|
||||||
def setUpClass(cls):
|
def setUpClass(cls):
|
||||||
IWD.copy_to_storage('TestAPRoam.psk')
|
IWD.copy_to_storage('TestAPRoam.psk')
|
||||||
|
|
||||||
|
cls.bss_hostapd = [ HostapdCLI(config='ssid1.conf'),
|
||||||
|
HostapdCLI(config='ssid2.conf'),
|
||||||
|
HostapdCLI(config='ssid3.conf') ]
|
||||||
|
|
||||||
@classmethod
|
@classmethod
|
||||||
def tearDownClass(cls):
|
def tearDownClass(cls):
|
||||||
IWD.clear_storage()
|
IWD.clear_storage()
|
||||||
|
Loading…
Reference in New Issue
Block a user