tests: Add functions to execute shell commands on interface host
Add the feature to execute shell commands on each wpa_supplicant/hostapd interface host. When executing remote tests the interfaces are not all on a single host so when executing shell commands the test needs to execute the command on the host which the interface relevant for the command is on. This patch enables tests to execute the command on the relevant host. Signed-off-by: Jonathan Afek <jonathanx.afek@intel.com>
This commit is contained in:
parent
3b208346ec
commit
7fd9fbc27d
2 changed files with 42 additions and 0 deletions
|
@ -12,6 +12,7 @@ import struct
|
|||
import wpaspy
|
||||
import remotehost
|
||||
import utils
|
||||
import subprocess
|
||||
|
||||
logger = logging.getLogger()
|
||||
hapd_ctrl = '/var/run/hostapd'
|
||||
|
@ -41,6 +42,17 @@ class HostapdGlobal:
|
|||
self.dbg = hostname + "/" + str(port)
|
||||
self.mon.attach()
|
||||
|
||||
def cmd_execute(self, cmd_array):
|
||||
if self.hostname is None:
|
||||
cmd = ' '.join(cmd_array)
|
||||
proc = subprocess.Popen(cmd, stderr=subprocess.STDOUT,
|
||||
stdout=subprocess.PIPE, shell=True)
|
||||
out = proc.communicate()[0]
|
||||
ret = proc.returncode
|
||||
return ret, out
|
||||
else:
|
||||
return self.host.execute(cmd_array)
|
||||
|
||||
def request(self, cmd, timeout=10):
|
||||
logger.debug(self.dbg + ": CTRL(global): " + cmd)
|
||||
return self.ctrl.request(cmd, timeout)
|
||||
|
@ -134,6 +146,20 @@ class Hostapd:
|
|||
self.bssid = None
|
||||
self.bssidx = bssidx
|
||||
|
||||
def cmd_execute(self, cmd_array):
|
||||
if self.hostname is None:
|
||||
cmd = ""
|
||||
for arg in cmd_array:
|
||||
cmd += arg + " "
|
||||
cmd = cmd.strip()
|
||||
proc = subprocess.Popen(cmd, stderr=subprocess.STDOUT,
|
||||
stdout=subprocess.PIPE, shell=True)
|
||||
out = proc.communicate()[0]
|
||||
ret = proc.returncode
|
||||
return ret, out
|
||||
else:
|
||||
return self.host.execute(cmd_array)
|
||||
|
||||
def close_ctrl(self):
|
||||
if self.mon is not None:
|
||||
self.mon.detach()
|
||||
|
@ -561,3 +587,7 @@ def ht40_minus_params(channel="1", ssid=None, country=None):
|
|||
params = ht20_params(channel, ssid, country)
|
||||
params['ht_capab'] = "[HT40-]"
|
||||
return params
|
||||
|
||||
def cmd_execute(apdev, cmd):
|
||||
hapd_global = HostapdGlobal(apdev)
|
||||
return hapd_global.cmd_execute(cmd)
|
||||
|
|
|
@ -12,6 +12,7 @@ import re
|
|||
import struct
|
||||
import wpaspy
|
||||
import remotehost
|
||||
import subprocess
|
||||
|
||||
logger = logging.getLogger()
|
||||
wpas_ctrl = '/var/run/wpa_supplicant'
|
||||
|
@ -48,6 +49,17 @@ class WpaSupplicant:
|
|||
else:
|
||||
self.global_mon = None
|
||||
|
||||
def cmd_execute(self, cmd_array):
|
||||
if self.hostname is None:
|
||||
cmd = ' '.join(cmd_array)
|
||||
proc = subprocess.Popen(cmd, stderr=subprocess.STDOUT,
|
||||
stdout=subprocess.PIPE, shell=True)
|
||||
out = proc.communicate()[0]
|
||||
ret = proc.returncode
|
||||
return ret, out
|
||||
else:
|
||||
return self.host.execute(cmd_array)
|
||||
|
||||
def terminate(self):
|
||||
if self.global_mon:
|
||||
self.global_mon.detach()
|
||||
|
|
Loading…
Reference in a new issue