auto-t: update testPreauth-roam to use connect_bssid/roam()

This commit is contained in:
James Prestwood 2021-08-12 13:22:06 -07:00 committed by Denis Kenzior
parent 1addaf3355
commit 6e331efbda
1 changed files with 11 additions and 42 deletions

View File

@ -4,69 +4,39 @@ import unittest
import sys, os import sys, os
sys.path.append('../util') sys.path.append('../util')
import iwd
from iwd import IWD from iwd import IWD
from iwd import PSKAgent
from iwd import NetworkType from iwd import NetworkType
from hwsim import Hwsim
from hostapd import HostapdCLI from hostapd import HostapdCLI
import testutil import testutil
class Test(unittest.TestCase): class Test(unittest.TestCase):
def test_preauth_success(self): def test_preauth_success(self):
hwsim = Hwsim()
bss_hostapd = [ HostapdCLI(config='eaptls-preauth-1.conf'), bss_hostapd = [ HostapdCLI(config='eaptls-preauth-1.conf'),
HostapdCLI(config='eaptls-preauth-2.conf') ] HostapdCLI(config='eaptls-preauth-2.conf') ]
bss_radio = [ hwsim.get_radio('rad0'),
hwsim.get_radio('rad1') ]
rule0 = hwsim.rules.create() bss0_addr = bss_hostapd[0].bssid
rule0.source = bss_radio[0].addresses[0] bss1_addr = bss_hostapd[1].bssid
rule0.bidirectional = True
rule1 = hwsim.rules.create()
rule1.source = bss_radio[1].addresses[0]
rule1.bidirectional = True
# Fill in the neighbor AP tables in both BSSes. By default each # Fill in the neighbor AP tables in both BSSes. By default each
# instance knows only about current BSS, even inside one hostapd # instance knows only about current BSS, even inside one hostapd
# process. # process.
# Roaming still works without the neighbor AP table but neighbor # Roaming still works without the neighbor AP table but neighbor
# reports have to be disabled in the .conf files # reports have to be disabled in the .conf files
bss0_nr = ''.join(bss_radio[0].addresses[0].split(':')) + \ bss0_nr = ''.join(bss0_addr.split(':')) + \
'8f0000005101060603000000' '8f0000005101060603000000'
bss1_nr = ''.join(bss_radio[1].addresses[0].split(':')) + \ bss1_nr = ''.join(bss1_addr.split(':')) + \
'8f0000005102060603000000' '8f0000005102060603000000'
bss_hostapd[0].set_neighbor(bss_radio[1].addresses[0], 'TestPreauth', bss_hostapd[0].set_neighbor(bss1_addr, 'TestPreauth', bss1_nr)
bss1_nr) bss_hostapd[1].set_neighbor(bss0_addr, 'TestPreauth', bss0_nr)
bss_hostapd[1].set_neighbor(bss_radio[0].addresses[0], 'TestPreauth',
bss0_nr)
# Check that iwd selects BSS 0 first
rule0.signal = -2500
rule1.signal = -6900
wd = IWD(True) wd = IWD(True)
device = wd.list_devices(1)[0] device = wd.list_devices(1)[0]
condition = 'not obj.scanning' ordered_network = device.get_ordered_network('TestPreauth', scan_if_needed=True)
wd.wait_for_object_condition(device, condition)
device.scan()
condition = 'obj.scanning'
wd.wait_for_object_condition(device, condition)
condition = 'not obj.scanning'
wd.wait_for_object_condition(device, condition)
ordered_network = device.get_ordered_network('TestPreauth')
self.assertEqual(ordered_network.type, NetworkType.eap) self.assertEqual(ordered_network.type, NetworkType.eap)
self.assertEqual(ordered_network.signal_strength, -2500)
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)
@ -74,7 +44,7 @@ class Test(unittest.TestCase):
self.assertFalse(bss_hostapd[0].list_sta()) self.assertFalse(bss_hostapd[0].list_sta())
self.assertFalse(bss_hostapd[1].list_sta()) self.assertFalse(bss_hostapd[1].list_sta())
ordered_network.network_object.connect() device.connect_bssid(bss0_addr)
condition = 'obj.state == DeviceState.connected' condition = 'obj.state == DeviceState.connected'
wd.wait_for_object_condition(device, condition) wd.wait_for_object_condition(device, condition)
@ -85,10 +55,9 @@ class Test(unittest.TestCase):
testutil.test_iface_operstate(device.name) testutil.test_iface_operstate(device.name)
testutil.test_ifaces_connected(bss_hostapd[0].ifname, device.name) testutil.test_ifaces_connected(bss_hostapd[0].ifname, device.name)
self.assertRaises(Exception, testutil.test_ifaces_connected, self.assertRaises(Exception, testutil.test_ifaces_connected,
bss_hostapd[1].ifname, device.name) bss_hostapd[1].ifname, device.name, True, True)
# Check that iwd starts transition to BSS 1 in less than 15 seconds device.roam(bss1_addr)
rule0.signal = -8000
condition = 'obj.state == DeviceState.roaming' condition = 'obj.state == DeviceState.roaming'
wd.wait_for_object_condition(device, condition) wd.wait_for_object_condition(device, condition)
@ -106,7 +75,7 @@ class Test(unittest.TestCase):
testutil.test_iface_operstate(device.name) testutil.test_iface_operstate(device.name)
testutil.test_ifaces_connected(bss_hostapd[1].ifname, device.name) testutil.test_ifaces_connected(bss_hostapd[1].ifname, device.name)
self.assertRaises(Exception, testutil.test_ifaces_connected, self.assertRaises(Exception, testutil.test_ifaces_connected,
(bss_hostapd[0].ifname, device.name)) (bss_hostapd[0].ifname, device.name, True, True))
device.disconnect() device.disconnect()