3
0
mirror of https://git.kernel.org/pub/scm/network/wireless/iwd.git synced 2024-10-04 02:18:49 +02:00

auto-t: use connect_bssid in APRoam

In addition the send_bss_transition call was updated to only send a
single BSS. By sending two BSS's IWD is left to pick whichever one
it wants which makes the test behavior undefined.
This commit is contained in:
James Prestwood 2021-08-12 13:22:07 -07:00 committed by Denis Kenzior
parent 6e331efbda
commit 7af6aac440
2 changed files with 5 additions and 44 deletions

View File

@ -0,0 +1,2 @@
[Security]
Passphrase=secret123

View File

@ -6,56 +6,22 @@ import sys
sys.path.append('../util') sys.path.append('../util')
import iwd import iwd
from iwd import IWD from iwd import IWD
from iwd import PSKAgent
from iwd import NetworkType from iwd import NetworkType
from hostapd import HostapdCLI from hostapd import HostapdCLI
from hwsim import Hwsim
class Test(unittest.TestCase): class Test(unittest.TestCase):
def test_connection_success(self): def test_connection_success(self):
hwsim = Hwsim()
bss_hostapd = [ HostapdCLI(config='ssid1.conf'), bss_hostapd = [ HostapdCLI(config='ssid1.conf'),
HostapdCLI(config='ssid2.conf'), HostapdCLI(config='ssid2.conf'),
HostapdCLI(config='ssid3.conf') ] HostapdCLI(config='ssid3.conf') ]
bss_radio = [ hwsim.get_radio('rad0'),
hwsim.get_radio('rad1'),
hwsim.get_radio('rad2') ]
rule0 = hwsim.rules.create()
rule0.source = bss_radio[0].addresses[0]
rule0.bidirectional = True
rule1 = hwsim.rules.create()
rule1.source = bss_radio[1].addresses[0]
rule1.bidirectional = True
rule2 = hwsim.rules.create()
rule2.source = bss_radio[2].addresses[0]
rule2.bidirectional = True
rule0.signal = -6000
rule1.signal = -6900
rule2.signal = -8000
wd = IWD() wd = IWD()
psk_agent = PSKAgent("secret123")
wd.register_psk_agent(psk_agent)
devices = wd.list_devices(1) devices = wd.list_devices(1)
device = devices[0] device = devices[0]
condition = 'not obj.scanning'
wd.wait_for_object_condition(device, condition)
device.scan()
condition = 'not obj.scanning'
wd.wait_for_object_condition(device, condition)
ordered_network = device.get_ordered_network('TestAPRoam') ordered_network = device.get_ordered_network('TestAPRoam')
self.assertEqual(ordered_network.type, NetworkType.psk) self.assertEqual(ordered_network.type, NetworkType.psk)
@ -63,7 +29,7 @@ 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)
ordered_network.network_object.connect() device.connect_bssid(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)
@ -74,8 +40,7 @@ class Test(unittest.TestCase):
self.assertFalse(bss_hostapd[1].list_sta()) self.assertFalse(bss_hostapd[1].list_sta())
bss_hostapd[0].send_bss_transition(device.address, bss_hostapd[0].send_bss_transition(device.address,
[(bss_radio[1].addresses[0], '8f0000005102060603000000'), [(bss_hostapd[1].bssid, '8f0000005102060603000000')])
(bss_radio[2].addresses[0], '8f0000005103060603000000')])
condition = 'obj.state == DeviceState.roaming' condition = 'obj.state == DeviceState.roaming'
wd.wait_for_object_condition(device, condition) wd.wait_for_object_condition(device, condition)
@ -93,15 +58,9 @@ 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)
wd.unregister_psk_agent(psk_agent)
rule0.remove()
rule1.remove()
rule2.remove()
@classmethod @classmethod
def setUpClass(cls): def setUpClass(cls):
pass IWD.copy_to_storage('TestAPRoam.psk')
@classmethod @classmethod
def tearDownClass(cls): def tearDownClass(cls):