From 174e9f2fe9c5f087ea3205bf82cfc4f2a0e4e473 Mon Sep 17 00:00:00 2001 From: James Prestwood Date: Wed, 28 Sep 2022 09:36:37 -0700 Subject: [PATCH] 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. --- autotests/testAPRoam/connection_test.py | 43 ++++++++++++++----------- 1 file changed, 24 insertions(+), 19 deletions(-) diff --git a/autotests/testAPRoam/connection_test.py b/autotests/testAPRoam/connection_test.py index 41d70f3a..a419f4aa 100644 --- a/autotests/testAPRoam/connection_test.py +++ b/autotests/testAPRoam/connection_test.py @@ -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()