tests: remote host stderr workaround
In case we are using ssh MUX (which speed up a lot test execution) with remotehost we could hit cases where ssh will hang up. This depends on different ssh versions and remotehost implementation. stderr as a tmpfile fixes this problem. Signed-off-by: Janusz Dziedzic <janusz.dziedzic@gmail.com>
This commit is contained in:
parent
ac6595f281
commit
fed855d5dd
1 changed files with 16 additions and 6 deletions
|
@ -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))
|
||||
|
|
Loading…
Reference in a new issue