Wireless Daemon for Linux
 help / color / mirror / Atom feed
* [PATCH] auto-t: allow skipping tests is wpa_supplicant is not found
@ 2022-06-01 20:00 James Prestwood
  0 siblings, 0 replies; only message in thread
From: James Prestwood @ 2022-06-01 20:00 UTC (permalink / raw)
  To: iwd 

[-- Attachment #1: Type: text/plain, Size: 4160 bytes --]

Similarly to ofono/phonesim allow tests to be skipped if wpa_supplicant
is not found on the system.

This required some changes to DPP/P2P where Wpas() should be called first
since this can now throw a SkipTest exception.

The Wpas class was also made to allow __del__ to be called without
throwing additional exceptions in case wpa_supplicant was not found.
---
 autotests/testDPP/connection_test.py |  3 +--
 autotests/testP2P/connection_test.py |  2 +-
 autotests/util/wpas.py               | 13 ++++++++++---
 tools/run-tests                      |  5 ++++-
 4 files changed, 16 insertions(+), 7 deletions(-)

diff --git a/autotests/testDPP/connection_test.py b/autotests/testDPP/connection_test.py
index ab3cbf95..0f9b8f1c 100644
--- a/autotests/testDPP/connection_test.py
+++ b/autotests/testDPP/connection_test.py
@@ -99,9 +99,9 @@ class Test(unittest.TestCase):
         self.wpas.wait_for_event('DPP-CONF-RECEIVED', timeout=30)
 
     def setUp(self):
+        self.wpas = Wpas('wpas.conf')
         self.wd = IWD(True)
         self.device = self.wd.list_devices(1)[0]
-        self.wpas = Wpas('wpas.conf')
         self.hapd = HostapdCLI('hostapd.conf')
         self.hapd.disable()
         self.hwsim = Hwsim()
@@ -114,7 +114,6 @@ class Test(unittest.TestCase):
         self.rule0.drop = True
 
     def tearDown(self):
-        print("calling Disconnect()")
         self.device.disconnect()
         self.device.dpp_stop()
         self.wpas.dpp_configurator_remove()
diff --git a/autotests/testP2P/connection_test.py b/autotests/testP2P/connection_test.py
index f22f0682..383e0cef 100644
--- a/autotests/testP2P/connection_test.py
+++ b/autotests/testP2P/connection_test.py
@@ -29,8 +29,8 @@ class Test(unittest.TestCase):
         self.p2p_connect_test(preauthorize=True, go=True)
 
     def p2p_connect_test(self, preauthorize, go):
-        wd = IWD()
         wpas = self.wpas = Wpas(p2p=True)
+        wd = IWD()
         wpas_go_intent = 10 if not go else 1
 
         # Not strictly necessary but prevents the station interface from queuing its scans
diff --git a/autotests/util/wpas.py b/autotests/util/wpas.py
index 67b32d5f..4db0dc68 100644
--- a/autotests/util/wpas.py
+++ b/autotests/util/wpas.py
@@ -3,6 +3,7 @@ import os
 import socket
 from gi.repository import GLib
 from config import ctx
+from unittest import SkipTest
 
 import binascii
 
@@ -11,7 +12,16 @@ from utils import Process
 ctrl_count = 0
 
 class Wpas:
+    io_watch = None
+    sockets = {}
+    wpa_supplicant = None
+    cleanup_paths = []
+
     def _start_wpas(self, config_name=None, p2p=False):
+        if not ctx.is_process_running('wpa_supplicant'):
+            print('wpa_supplicant not running, skipping test')
+            raise SkipTest
+
         main_interface = None
         for interface in ctx.wpas_interfaces:
             if config_name is None or interface.config == config_name:
@@ -31,7 +41,6 @@ class Wpas:
         self.config_path = '/tmp/' + self.interface.config
         self.config = self._get_config()
         self.socket_path = self.config['ctrl_interface']
-        self.io_watch = None
 
         cmd = ['wpa_supplicant', '-i', self.interface.name, '-c', self.config_path]
         if Process.is_verbose('wpa_supplicant-dbg'):
@@ -39,8 +48,6 @@ class Wpas:
 
         self.wpa_supplicant = ctx.start_process(cmd)
 
-        self.sockets = {}
-        self.cleanup_paths = []
         self.io_watch = GLib.io_add_watch(self._get_socket(), GLib.IO_IN, self._handle_data_in)
 
         self.p2p_peers = {}
diff --git a/tools/run-tests b/tools/run-tests
index a3644ce1..f65daf67 100755
--- a/tools/run-tests
+++ b/tools/run-tests
@@ -425,10 +425,13 @@ class TestContext(Namespace):
 		return frequencies
 
 	def start_wpas_interfaces(self):
-
 		if 'WPA_SUPPLICANT' not in self.hw_config:
 			return
 
+		if not shutil.which('wpa_supplicant'):
+			print('wpa_supplicant not found, dependent tests will be skipped')
+			return
+
 		settings = self.hw_config['WPA_SUPPLICANT']
 
 		if self.args.hw:
-- 
2.34.1

^ permalink raw reply related	[flat|nested] only message in thread

only message in thread, other threads:[~2022-06-01 20:00 UTC | newest]

Thread overview: (only message) (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2022-06-01 20:00 [PATCH] auto-t: allow skipping tests is wpa_supplicant is not found James Prestwood

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox