test-runner: start HostapdCLI from test-runner
This gives the benefit of test-runner itself having access to the CLI, e.g. for getting status information.
This commit is contained in:
parent
c7466cd56a
commit
57933425ca
|
@ -42,6 +42,24 @@ class HostapdCLI:
|
||||||
|
|
||||||
hapd = ctx.hostapd[config]
|
hapd = ctx.hostapd[config]
|
||||||
|
|
||||||
|
if not hasattr(self, '_hostapd_restarted'):
|
||||||
|
self._hostapd_restarted = False
|
||||||
|
|
||||||
|
#
|
||||||
|
# TODO: In theory some type of instance singleton could be created for
|
||||||
|
# HostapdCLI where test-runner initializes but any subsequent
|
||||||
|
# call to HostapdCLI (with the same config) returns the same
|
||||||
|
# object that test-runner has. This would avoid setting these
|
||||||
|
# variables.
|
||||||
|
#
|
||||||
|
if hapd.cli:
|
||||||
|
self.ifname = hapd.cli.ifname
|
||||||
|
self.ctrl_sock = hapd.cli.ctrl_sock
|
||||||
|
self.cmdline = hapd.cli.cmdline
|
||||||
|
self.interface = hapd.intf
|
||||||
|
self.config = hapd.config
|
||||||
|
return
|
||||||
|
|
||||||
self.interface = hapd.intf
|
self.interface = hapd.intf
|
||||||
self.config = hapd.config
|
self.config = hapd.config
|
||||||
|
|
||||||
|
@ -53,9 +71,6 @@ class HostapdCLI:
|
||||||
|
|
||||||
self.cmdline = ['hostapd_cli', '-p', self.socket_path, '-i', self.ifname]
|
self.cmdline = ['hostapd_cli', '-p', self.socket_path, '-i', self.ifname]
|
||||||
|
|
||||||
if not hasattr(self, '_hostapd_restarted'):
|
|
||||||
self._hostapd_restarted = False
|
|
||||||
|
|
||||||
self.local_ctrl = '/tmp/hostapd_' + str(os.getpid()) + '_' + \
|
self.local_ctrl = '/tmp/hostapd_' + str(os.getpid()) + '_' + \
|
||||||
str(ctrl_count)
|
str(ctrl_count)
|
||||||
self.ctrl_sock = socket.socket(socket.AF_UNIX, socket.SOCK_DGRAM)
|
self.ctrl_sock = socket.socket(socket.AF_UNIX, socket.SOCK_DGRAM)
|
||||||
|
@ -244,3 +259,14 @@ class HostapdCLI:
|
||||||
bssid = [x for x in status if x.startswith('bssid')]
|
bssid = [x for x in status if x.startswith('bssid')]
|
||||||
bssid = bssid[0].split('=')
|
bssid = bssid[0].split('=')
|
||||||
return bssid[1]
|
return bssid[1]
|
||||||
|
|
||||||
|
@property
|
||||||
|
def frequency(self):
|
||||||
|
cmd = self.cmdline + ['status']
|
||||||
|
status = ctx.start_process(cmd, wait=True, need_out=True).out
|
||||||
|
status = status.split('\n')
|
||||||
|
|
||||||
|
frequency = [x for x in status if x.startswith('freq')][0]
|
||||||
|
frequency = frequency.split('=')[1]
|
||||||
|
|
||||||
|
return int(frequency)
|
||||||
|
|
|
@ -428,6 +428,7 @@ class HostapdInstance:
|
||||||
def __init__(self, config, radio):
|
def __init__(self, config, radio):
|
||||||
self.radio = radio
|
self.radio = radio
|
||||||
self.config = config
|
self.config = config
|
||||||
|
self.cli = None
|
||||||
|
|
||||||
self.intf = radio.create_interface(self.config, 'hostapd')
|
self.intf = radio.create_interface(self.config, 'hostapd')
|
||||||
self.intf.set_interface_state('up')
|
self.intf.set_interface_state('up')
|
||||||
|
@ -494,6 +495,10 @@ class Hostapd:
|
||||||
|
|
||||||
self.process.wait_for_socket(self.global_ctrl_iface, 30)
|
self.process.wait_for_socket(self.global_ctrl_iface, 30)
|
||||||
|
|
||||||
|
def attach_cli(self):
|
||||||
|
for hapd in self.instances:
|
||||||
|
hapd.cli = importlib.import_module('hostapd').HostapdCLI(config=hapd.config)
|
||||||
|
|
||||||
def _rewrite_config(self, config):
|
def _rewrite_config(self, config):
|
||||||
'''
|
'''
|
||||||
Replaces any $ifaceN values with the correct interface
|
Replaces any $ifaceN values with the correct interface
|
||||||
|
@ -841,6 +846,15 @@ class TestContext(Namespace):
|
||||||
radius_config = settings.get('radius_server', None)
|
radius_config = settings.get('radius_server', None)
|
||||||
|
|
||||||
self.hostapd = Hostapd(self, hapd_radios, hapd_configs, radius_config)
|
self.hostapd = Hostapd(self, hapd_radios, hapd_configs, radius_config)
|
||||||
|
self.hostapd.attach_cli()
|
||||||
|
|
||||||
|
def get_frequencies(self):
|
||||||
|
frequencies = []
|
||||||
|
|
||||||
|
for hapd in self.hostapd.instances:
|
||||||
|
frequencies.append(hapd.cli.frequency)
|
||||||
|
|
||||||
|
return frequencies
|
||||||
|
|
||||||
def start_wpas_interfaces(self):
|
def start_wpas_interfaces(self):
|
||||||
if 'WPA_SUPPLICANT' not in self.hw_config:
|
if 'WPA_SUPPLICANT' not in self.hw_config:
|
||||||
|
|
Loading…
Reference in New Issue