Skip to contentSkip to conversation

auto-t: return None with get_ordered_network(s)

PATCH In review James Prestwood 2 participants 4 messages Oct 28, 2019

lore
Share & tools
lore
#0 lore raw

PATCH 1/3 auto-t: return None with get_ordered_network(s)

If no networks are found, return None rather than an empty array. This is easier to check by the caller (and was assumed in some cases). Also add an exception to get_ordered_network if no network is found.

---
 autotests/util/iwd.py | 7 +++++++
 1 file changed, 7 insertions(+)
autotests/util/iwd.py +7 -0
index 3ba5112c..35e5a693 100755
@@ -376,6 +376,10 @@ class Device(IWDDBusAbstract):
         for bus_obj in self._station.GetOrderedNetworks():
             ordered_network = OrderedNetwork(bus_obj)
             ordered_networks.append(ordered_network)
+
+        if len(ordered_networks) == 0:
+            return None
+
         return ordered_networks
 
     def get_ordered_network(self, network):
@@ -385,6 +389,9 @@ class Device(IWDDBusAbstract):
         '''
         ordered_networks = self.get_ordered_networks()
 
+        if not ordered_networks:
+            raise Exception('Network %s not found' % network)
+
         for n in ordered_networks:
             if n.name == network:
                 return n
Signature · 1 line
2.17.1
#1 lore raw

PATCH 2/3 auto-t: fix random failures in testEAP-MSCHAPV2

Its difficult to know 100%, but this random test failures appeared to be caused by two issues. One was that get_ordered_network is being checked for None, when it was returning a zero length array. Because of this the scanning block was never executed in any cases. This was fixed in the previous commit. The other issue was the disconnect at the start of the tests. The disconnect will cause all pending scans to cancel, which appeared to cause the scanning block below to be skipped over quickly if the timing was right. Then, afterwards, getting a single network failed because scanning was not complete.

---
 autotests/testEAP-MSCHAPV2/connection_test.py | 5 -----
 1 file changed, 5 deletions(-)
autotests/testEAP-MSCHAPV2/connection_test.py +0 -5
index d38f4b09..35926375 100644
@@ -19,11 +19,6 @@ class Test(unittest.TestCase):
         devices = wd.list_devices(1)
         device = devices[0]
 
-        try:
-            device.disconnect()
-        except:
-            pass
-
         condition = 'not obj.scanning'
         wd.wait_for_object_condition(device, condition)
 
Signature · 1 line
2.17.1
#2 lore raw

PATCH 3/3 auto-t: update testEAP-TLS to use HostapdCLI

In reply to James Prestwood

This test did not use the updated HostapdCLI where you can specify a config file rather than iterate hostapd list.

---
 autotests/testEAP-TLS/connection_test.py | 11 +++--------
 autotests/testEAP-TLS/ssidEAP-TLS.conf   |  1 +
 autotests/testEAP-TLS/ssidEAP-TLS2.conf  |  1 +
 autotests/testEAP-TLS/ssidEAP-TLS3.conf  |  1 +
 4 files changed, 6 insertions(+), 8 deletions(-)
autotests/testEAP-TLS/connection_test.py +3 -8
index 6d82dda7..9b696aa4 100644
@@ -9,23 +9,18 @@ from iwd import IWD
 from iwd import PSKAgent
 from iwd import NetworkType
 import testutil
-import hostapd
+from hostapd import HostapdCLI
 
 class Test(unittest.TestCase):
 
     def do_test_connection_success(self, ssid, passphrase=None):
+        hapd = HostapdCLI(config=ssid + '.conf')
         wd = IWD()
 
         if passphrase:
             psk_agent = PSKAgent(passphrase)
             wd.register_psk_agent(psk_agent)
 
-        hostapd_ifname = None
-        for ifname in hostapd.hostapd_map:
-            if ssid + '.conf' in hostapd.hostapd_map[ifname].config:
-                hostapd_ifname = ifname
-                break
-
         devices = wd.list_devices(1)
         device = devices[0]
 
@@ -52,7 +47,7 @@ class Test(unittest.TestCase):
         wd.wait_for_object_condition(ordered_network.network_object, condition)
 
         testutil.test_iface_operstate()
-        testutil.test_ifaces_connected(hostapd_ifname, device.name)
+        testutil.test_ifaces_connected(hapd.ifname, device.name)
 
         device.disconnect()
 
autotests/testEAP-TLS/ssidEAP-TLS.conf +1 -0
index e1d7c6b4..b14ea423 100644
@@ -1,3 +1,4 @@
+ctrl_interface=/var/run/hostapd
 hw_mode=g
 channel=1
 ssid=ssidEAP-TLS
autotests/testEAP-TLS/ssidEAP-TLS2.conf +1 -0
index ebb0f36b..6a811deb 100644
@@ -1,3 +1,4 @@
+ctrl_interface=/var/run/hostapd
 hw_mode=g
 channel=2
 ssid=ssidEAP-TLS2
autotests/testEAP-TLS/ssidEAP-TLS3.conf +1 -0
index ebbeab13..3a5f70bf 100644
@@ -1,3 +1,4 @@
+ctrl_interface=/var/run/hostapd
 hw_mode=g
 channel=3
 ssid=ssidEAP-TLS3
Signature · 1 line
2.17.1
#3 lore raw
In reply to James Prestwood

Hi James,

Quoted 8 lines · James Prestwood

If no networks are found, return None rather than an empty array. This is easier to check by the caller (and was assumed in some cases). Also add an exception to get_ordered_network if no network is found.

---
  autotests/util/iwd.py | 7 +++++++
  1 file changed, 7 insertions(+)

All applied, thanks.

Regards,
-Denis