auto-t: allow skipping tests is wpa_supplicant is not found

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.
This commit is contained in:
James Prestwood 2022-06-02 11:49:55 -07:00 committed by Denis Kenzior
parent 1296e4eacb
commit df46776046
4 changed files with 17 additions and 6 deletions

View File

@ -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()

View File

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

View File

@ -1,8 +1,10 @@
#!/usr/bin/python3
import os
import socket
import shutil
from gi.repository import GLib
from config import ctx
from unittest import SkipTest
import binascii
@ -11,7 +13,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 shutil.which('wpa_supplicant'):
print('wpa_supplicant not found, 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 +42,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'):
@ -40,7 +50,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 = {}

View File

@ -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: