Wireless Daemon for Linux
 help / color / mirror / Atom feed
From: James Prestwood <prestwoj at gmail.com>
To: iwd at lists.01.org
Subject: [PATCH] auto-t: allow skipping tests is wpa_supplicant is not found
Date: Wed, 01 Jun 2022 13:00:54 -0700	[thread overview]
Message-ID: <20220601200054.453084-1-prestwoj@gmail.com> (raw)

[-- 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

                 reply	other threads:[~2022-06-01 20:00 UTC|newest]

Thread overview: [no followups] expand[flat|nested]  mbox.gz  Atom feed

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=20220601200054.453084-1-prestwoj@gmail.com \
    --to=iwd@lists.linux.dev \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox