mirror of
https://git.kernel.org/pub/scm/network/wireless/iwd.git
synced 2024-11-21 22:09:23 +01:00
auto-t: add netconfig autotest
Tests that DHCP using IWD's internal netconfig functions properly. The actual IP address assignment is not verified, but since IWD does not signal the connection as successful unless DHCP succeeds we can assume it was successful by checking that the device is connected. The process of actually starting dhcpd and configuring the interfaces is quite simple so it was left in the autotest itself. If (or when) more tests require IP capabilities (p2p, FILS, etc) this could be moved into test-runner itself and be made common. The reason I did not put it in there now is a) because this is the only test and b) more complex DHCP cases are likely to develop and may require more than this simplistic setup (like multiple APs/interfaces)
This commit is contained in:
parent
2e7fb5ee50
commit
2f51b51152
70
autotests/testNetconfig/connection_test.py
Normal file
70
autotests/testNetconfig/connection_test.py
Normal file
@ -0,0 +1,70 @@
|
|||||||
|
#!/usr/bin/python3
|
||||||
|
|
||||||
|
import unittest
|
||||||
|
import sys
|
||||||
|
|
||||||
|
sys.path.append('../util')
|
||||||
|
import iwd
|
||||||
|
from iwd import IWD
|
||||||
|
from iwd import PSKAgent
|
||||||
|
from iwd import NetworkType
|
||||||
|
import testutil
|
||||||
|
from config import ctx
|
||||||
|
|
||||||
|
class Test(unittest.TestCase):
|
||||||
|
|
||||||
|
def test_connection_success(self):
|
||||||
|
wd = IWD()
|
||||||
|
|
||||||
|
psk_agent = PSKAgent("secret123")
|
||||||
|
wd.register_psk_agent(psk_agent)
|
||||||
|
|
||||||
|
devices = wd.list_devices(1)
|
||||||
|
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('ssidTKIP')
|
||||||
|
|
||||||
|
self.assertEqual(ordered_network.type, NetworkType.psk)
|
||||||
|
|
||||||
|
condition = 'not obj.connected'
|
||||||
|
wd.wait_for_object_condition(ordered_network.network_object, condition)
|
||||||
|
|
||||||
|
ordered_network.network_object.connect()
|
||||||
|
|
||||||
|
condition = 'obj.state == DeviceState.connected'
|
||||||
|
wd.wait_for_object_condition(device, condition)
|
||||||
|
|
||||||
|
testutil.test_iface_operstate()
|
||||||
|
testutil.test_ifaces_connected()
|
||||||
|
|
||||||
|
device.disconnect()
|
||||||
|
|
||||||
|
condition = 'not obj.connected'
|
||||||
|
wd.wait_for_object_condition(ordered_network.network_object, condition)
|
||||||
|
|
||||||
|
wd.unregister_psk_agent(psk_agent)
|
||||||
|
|
||||||
|
@classmethod
|
||||||
|
def setUpClass(cls):
|
||||||
|
# TODO: This could be moved into test-runner itself if other tests ever
|
||||||
|
# require this functionality (p2p, FILS, etc.). Since its simple
|
||||||
|
# enough it can stay here for now.
|
||||||
|
ctx.start_process(['ifconfig', 'wln0', '192.168.1.1', 'netmask', '255.255.255.0'],
|
||||||
|
wait=True)
|
||||||
|
ctx.start_process(['touch', '/tmp/dhcpd.leases'], wait=True)
|
||||||
|
ctx.start_process(['dhcpd', '-cf', '/tmp/dhcpd.conf', '-lf', '/tmp/dhcpd.leases'])
|
||||||
|
|
||||||
|
@classmethod
|
||||||
|
def tearDownClass(cls):
|
||||||
|
IWD.clear_storage()
|
||||||
|
|
||||||
|
if __name__ == '__main__':
|
||||||
|
unittest.main(exit=True)
|
16
autotests/testNetconfig/dhcpd.conf
Normal file
16
autotests/testNetconfig/dhcpd.conf
Normal file
@ -0,0 +1,16 @@
|
|||||||
|
default-lease-time 600; # 10 minutes
|
||||||
|
max-lease-time 7200; # 2 hours
|
||||||
|
|
||||||
|
option broadcast-address 192.168.1.255;
|
||||||
|
option routers 192.168.1.254;
|
||||||
|
option subnet-mask 255.255.255.0;
|
||||||
|
|
||||||
|
subnet 192.168.1.0 netmask 255.255.255.0
|
||||||
|
{
|
||||||
|
option routers 192.168.1.1;
|
||||||
|
option subnet-mask 255.255.255.0;
|
||||||
|
option domain-name-servers 192.168.1.1;
|
||||||
|
interface wln0;
|
||||||
|
range 192.168.1.10 192.168.1.20;
|
||||||
|
range 192.168.1.100 192.168.1.200;
|
||||||
|
}
|
6
autotests/testNetconfig/hw.conf
Normal file
6
autotests/testNetconfig/hw.conf
Normal file
@ -0,0 +1,6 @@
|
|||||||
|
[SETUP]
|
||||||
|
num_radios=2
|
||||||
|
max_test_exec_interval_sec=40
|
||||||
|
|
||||||
|
[HOSTAPD]
|
||||||
|
rad0=ssidTKIP.conf
|
2
autotests/testNetconfig/main.conf
Normal file
2
autotests/testNetconfig/main.conf
Normal file
@ -0,0 +1,2 @@
|
|||||||
|
[General]
|
||||||
|
EnableNetworkConfiguration=true
|
7
autotests/testNetconfig/ssidTKIP.conf
Normal file
7
autotests/testNetconfig/ssidTKIP.conf
Normal file
@ -0,0 +1,7 @@
|
|||||||
|
hw_mode=g
|
||||||
|
channel=1
|
||||||
|
ssid=ssidTKIP
|
||||||
|
|
||||||
|
wpa=1
|
||||||
|
wpa_pairwise=TKIP
|
||||||
|
wpa_passphrase=secret123
|
Loading…
Reference in New Issue
Block a user