3
0
mirror of https://git.kernel.org/pub/scm/network/wireless/iwd.git synced 2024-12-22 04:32:37 +01:00

auto-t: fix unpredictability/pointless test from testAgent

testAgent had a few tests which weren't reliable, and one was not
actually testing anything, or at least not what the name implied it
should be testing.

The first issue was using iwctl in the first place. There is not a
reliable way to know when iwctl has registered its agent so relying on
that with a sleep, or waiting for the service to become available isn't
100% fool proof. To fix this use the updated PSKAgent which allows
multiple to be registered. This ensures the agent is ready for requests.
This test was also renamed to be consistent with what its actually
testing: that IWD uses the first agent registered.

This removes test_connection_with_other_agent as well because this test
case is covered by the client test itself. There is no need to re-test
iwctl's agent functionality here.
This commit is contained in:
James Prestwood 2022-06-29 10:31:13 -07:00 committed by Denis Kenzior
parent 01ae1a9d88
commit 5b58390b8d

View File

@ -56,51 +56,19 @@ class Test(unittest.TestCase):
IWD.clear_storage()
def test_connection_with_other_agent(self):
def wait_for_service_pid(pid):
dbus_object = ctx._bus.get_object('org.freedesktop.DBus',
'/org/freedesktop/DBus')
dbus_iface = dbus.Interface(dbus_object, 'org.freedesktop.DBus')
services = dbus_iface.ListNames()
for service in services:
bus_iface = dbus.Interface(dbus_object, "org.freedesktop.DBus")
if pid == int(bus_iface.GetConnectionUnixProcessID(service)):
return True
return False
def test_connection_use_first_from_multiple_registered(self):
wd = IWD()
iwctl = ctx.start_process(['iwctl', '-P', 'secret_ssid2'])
# Let iwctl to start and register its agent.
ctx.non_block_wait(wait_for_service_pid, 10, iwctl.pid)
self.check_connection(wd, 'ssid2')
iwctl.kill()
IWD.clear_storage()
def test_connection_use_own_agent_from_multiple_registered(self):
wd = IWD()
iwctl = ctx.start_process(['iwctl', '-P', 'secret_ssid2'])
# Let iwctl to start and register its agent.
wd.wait(2)
psk_agent = PSKAgent("secret_ssid1")
wd.register_psk_agent(psk_agent)
psk_agent = PSKAgent("secret_ssid2")
wd.register_psk_agent(psk_agent)
self.check_connection(wd, 'ssid1')
wd.unregister_psk_agent(psk_agent)
iwctl.kill()
IWD.clear_storage()
@classmethod