3
0
mirror of https://git.kernel.org/pub/scm/network/wireless/iwd.git synced 2024-11-22 14:49:24 +01:00
iwd/autotests/testDPP/connection_test.py
James Prestwood c193d36499 auto-t: fix testDPP after Stop() change
Stop() will now return NotFound if DPP is not running. This causes
the DPP test to fail since it calls this regardless if the protocol
already stopped. Ignore this exception since tests end in various
states, some stopped and some not.
2023-11-09 10:20:51 -06:00

178 lines
5.2 KiB
Python

#!/usr/bin/python3
import unittest
import sys
sys.path.append('../util')
from iwd import IWD
from iwd import DeviceProvisioning
from wpas import Wpas
from hostapd import HostapdCLI
from hwsim import Hwsim
from config import ctx
class Test(unittest.TestCase):
def test_iwd_as_enrollee(self):
self.device.autoconnect = True
self.hapd.reload()
uri = self.device.dpp_start_enrollee()
self.wpas.dpp_configurator_create(uri)
self.wpas.dpp_configurator_start('ssidCCMP', 'secret123')
condition = 'obj.state == DeviceState.connected'
self.wd.wait_for_object_condition(self.device, condition)
def test_iwd_as_enrollee_channel_switch(self):
self.device.autoconnect = True
self.hapd.reload()
uri = self.device.dpp_start_enrollee()
self.wpas.dpp_configurator_create(uri)
self.wpas.dpp_configurator_start('ssidCCMP', 'secret123', freq=2462)
condition = 'obj.state == DeviceState.connected'
self.wd.wait_for_object_condition(self.device, condition)
def test_iwd_as_enrollee_scan_after(self):
self.wpas.disconnect()
uri = self.device.dpp_start_enrollee()
self.wpas.dpp_configurator_create(uri)
self.wpas.dpp_configurator_start('ssidCCMP', 'secret123')
self.hapd.reload()
with self.assertRaises(Exception):
self.device.get_ordered_network('ssidCCMP', scan_if_needed=False)
self.hapd.wait_for_event('AP-ENABLED')
self.device.autoconnect = True
condition = 'obj.state == DeviceState.connected'
self.wd.wait_for_object_condition(self.device, condition)
def test_iwd_as_enrollee_no_ack(self):
self.rule0.enabled = True
self.device.autoconnect = True
self.hapd.reload()
uri = self.device.dpp_start_enrollee()
self.wpas.dpp_configurator_create(uri)
self.wpas.dpp_configurator_start('ssidCCMP', 'secret123')
condition = 'obj.state == DeviceState.connected'
self.wd.wait_for_object_condition(self.device, condition)
def test_iwd_as_configurator(self):
self.hapd.reload()
self.hapd.wait_for_event('AP-ENABLED')
IWD.copy_to_storage('ssidCCMP.psk')
self.device.autoconnect = True
condition = 'obj.state == DeviceState.connected'
self.wd.wait_for_object_condition(self.device, condition)
uri = self.device.dpp_start_configurator()
self.wpas.dpp_enrollee_start(uri)
self.wpas.wait_for_event('DPP-CONF-RECEIVED', timeout=30)
def test_iwd_as_configurator_initiator(self):
self.hapd.reload()
self.hapd.wait_for_event('AP-ENABLED')
IWD.copy_to_storage('ssidCCMP.psk')
self.device.autoconnect = True
condition = 'obj.state == DeviceState.connected'
self.wd.wait_for_object_condition(self.device, condition)
uri = self.wpas.dpp_enrollee_start(oper_and_channel='81/2')
self.device.dpp_start_configurator(uri)
self.wpas.wait_for_event('DPP-CONF-RECEIVED', timeout=30)
def test_client_as_configurator(self):
self.hapd.reload()
self.hapd.wait_for_event('AP-ENABLED')
IWD.copy_to_storage('ssidCCMP.psk')
self.device.autoconnect = True
condition = 'obj.state == DeviceState.connected'
self.wd.wait_for_object_condition(self.device, condition)
ctx.start_process(['iwctl', 'dpp', self.device.name, 'start-configurator'], check=True)
dpp = DeviceProvisioning(self.device.device_path)
self.wpas.dpp_enrollee_start(dpp.uri)
self.wpas.wait_for_event('DPP-CONF-RECEIVED', timeout=30)
def test_client_as_enrollee(self):
self.device.autoconnect = True
self.hapd.reload()
ctx.start_process(['iwctl', 'dpp', self.device.name, 'start-enrollee'], check=True)
dpp = DeviceProvisioning(self.device.device_path)
self.wpas.dpp_configurator_create(dpp.uri)
self.wpas.dpp_configurator_start('ssidCCMP', 'secret123')
condition = 'obj.state == DeviceState.connected'
self.wd.wait_for_object_condition(self.device, condition)
def setUp(self):
self.wpas = Wpas('wpas.conf')
self.wd = IWD(True)
self.device = self.wd.list_devices(1)[0]
self.hapd = HostapdCLI('hostapd.conf')
self.hapd.disable()
self.hwsim = Hwsim()
self.rule0 = self.hwsim.rules.create()
self.rule0.prefix = 'd0'
self.rule0.match_offset = 24
self.rule0.match = '04 09 50 6f 9a 1a 01 01'
self.rule0.match_times = 1
self.rule0.drop = True
def tearDown(self):
# Tests end in various states, don't fail when tearing down.
try:
self.device.disconnect()
self.device.dpp_stop()
except:
pass
self.wpas.dpp_configurator_remove()
self.wpas.clean_up()
self.wd = None
self.device = None
self.wpas = None
self.hapd = None
self.rule0 = None
IWD.clear_storage()
@classmethod
def setUpClass(cls):
pass
@classmethod
def tearDownClass(cls):
pass
if __name__ == '__main__':
unittest.main(exit=True)