tests/vm: allow wait_ssh() to specify command

This allows for waiting for completion of arbitrary commands.

Signed-off-by: Robert Foley <robert.foley@linaro.org>
Reviewed-by: Peter Puhov <peter.puhov@linaro.org>
Reviewed-by: Alex Bennée <alex.bennee@linaro.org>
Reviewed-by: Philippe Mathieu-Daudé <philmd@redhat.com>
Tested-by: Philippe Mathieu-Daudé <philmd@redhat.com>
Message-Id: <20200529203458.1038-7-robert.foley@linaro.org>
Signed-off-by: Philippe Mathieu-Daudé <philmd@redhat.com>
This commit is contained in:
Robert Foley 2020-05-29 16:34:52 -04:00 committed by Philippe Mathieu-Daudé
parent e56c45047b
commit 6ee982c9ab

View File

@ -320,24 +320,24 @@ class BaseVM(object):
def print_step(self, text): def print_step(self, text):
sys.stderr.write("### %s ...\n" % text) sys.stderr.write("### %s ...\n" % text)
def wait_ssh(self, wait_root=False, seconds=300): def wait_ssh(self, wait_root=False, seconds=300, cmd="exit 0"):
# Allow more time for VM to boot under TCG. # Allow more time for VM to boot under TCG.
if not kvm_available(self.arch): if not kvm_available(self.arch):
seconds *= self.tcg_ssh_timeout_multiplier seconds *= self.tcg_ssh_timeout_multiplier
starttime = datetime.datetime.now() starttime = datetime.datetime.now()
endtime = starttime + datetime.timedelta(seconds=seconds) endtime = starttime + datetime.timedelta(seconds=seconds)
guest_up = False cmd_success = False
while datetime.datetime.now() < endtime: while datetime.datetime.now() < endtime:
if wait_root and self.ssh_root("exit 0") == 0: if wait_root and self.ssh_root(cmd) == 0:
guest_up = True cmd_success = True
break break
elif self.ssh("exit 0") == 0: elif self.ssh(cmd) == 0:
guest_up = True cmd_success = True
break break
seconds = (endtime - datetime.datetime.now()).total_seconds() seconds = (endtime - datetime.datetime.now()).total_seconds()
logging.debug("%ds before timeout", seconds) logging.debug("%ds before timeout", seconds)
time.sleep(1) time.sleep(1)
if not guest_up: if not cmd_success:
raise Exception("Timeout while waiting for guest ssh") raise Exception("Timeout while waiting for guest ssh")
def shutdown(self): def shutdown(self):