[PATCH 2/9] tests: remote host stderr workaround
Janusz Dziedzic
janusz.dziedzic at gmail.com
Sat Sep 26 07:26:53 EDT 2020
In case we are using ssh MUX (which speed
up a lot test execution) with remotehost
we could hit cases when ssh will hang up.
This depends on different ssh versions
and remotehost implementation.
stderr as a tmpfile fix this problem.
Signed-off-by: Janusz Dziedzic <janusz.dziedzic at gmail.com>
---
tests/hwsim/remotehost.py | 22 ++++++++++++++++------
1 file changed, 16 insertions(+), 6 deletions(-)
diff --git a/tests/hwsim/remotehost.py b/tests/hwsim/remotehost.py
index 8e121538a..b87b58936 100644
--- a/tests/hwsim/remotehost.py
+++ b/tests/hwsim/remotehost.py
@@ -7,6 +7,7 @@
import logging
import subprocess
import threading
+import tempfile
logger = logging.getLogger()
@@ -17,12 +18,15 @@ def remote_compatible(func):
def execute_thread(command, reply):
cmd = ' '.join(command)
logger.debug("thread run: " + cmd)
+ err = tempfile.TemporaryFile()
try:
status = 0
- buf = subprocess.check_output(command, stderr=subprocess.STDOUT).decode()
+ buf = subprocess.check_output(command, stderr=err).decode()
except subprocess.CalledProcessError as e:
status = e.returncode
- buf = e.output
+ err.seek(0)
+ buf = err.read()
+ err.close()
logger.debug("thread cmd: " + cmd)
logger.debug("thread exit status: " + str(status))
@@ -46,12 +50,15 @@ class Host():
def local_execute(self, command):
logger.debug("execute: " + str(command))
+ err = tempfile.TemporaryFile()
try:
status = 0
- buf = subprocess.check_output(command, stderr=subprocess.STDOUT)
+ buf = subprocess.check_output(command, stderr=err)
except subprocess.CalledProcessError as e:
status = e.returncode
- buf = e.output
+ err.seek(0)
+ buf = err.read()
+ err.close()
logger.debug("status: " + str(status))
logger.debug("buf: " + str(buf))
@@ -64,12 +71,15 @@ class Host():
cmd = ["ssh", self.user + "@" + self.host, ' '.join(command)]
_cmd = self.name + " execute: " + ' '.join(cmd)
logger.debug(_cmd)
+ err = tempfile.TemporaryFile()
try:
status = 0
- buf = subprocess.check_output(cmd, stderr=subprocess.STDOUT)
+ buf = subprocess.check_output(cmd, stderr=err)
except subprocess.CalledProcessError as e:
status = e.returncode
- buf = e.output
+ err.seek(0)
+ buf = err.read()
+ err.close()
logger.debug(self.name + " status: " + str(status))
logger.debug(self.name + " buf: " + str(buf))
--
2.17.1
More information about the Hostap
mailing list