mirror of https://gitee.com/openkylin/qemu.git
tests/vm: proper guest shutdown
When not running in snapshot mode ask the guest to poweroff and wait for this to finish instead of simply quitting qemu, so the guest can flush pending updates to disk. Signed-off-by: Gerd Hoffmann <kraxel@redhat.com> Tested-by: Thomas Huth <thuth@redhat.com> Reviewed-by: Philippe Mathieu-Daudé <philmd@redhat.com> Tested-by: Philippe Mathieu-Daudé <philmd@redhat.com> Message-Id: <20190617043858.8290-5-kraxel@redhat.com> Signed-off-by: Alex Bennée <alex.bennee@linaro.org>
This commit is contained in:
parent
7f71d5051e
commit
b3f94b2f46
|
@ -52,6 +52,8 @@ class BaseVM(object):
|
|||
name = "#base"
|
||||
# The guest architecture, to be overridden by subclasses
|
||||
arch = "#arch"
|
||||
# command to halt the guest, can be overridden by subclasses
|
||||
poweroff = "poweroff"
|
||||
def __init__(self, debug=False, vcpus=None):
|
||||
self._guest = None
|
||||
self._tmpdir = os.path.realpath(tempfile.mkdtemp(prefix="vm-test-",
|
||||
|
@ -203,6 +205,10 @@ def shutdown(self):
|
|||
def wait(self):
|
||||
self._guest.wait()
|
||||
|
||||
def graceful_shutdown(self):
|
||||
self.ssh_root(self.poweroff)
|
||||
self._guest.wait()
|
||||
|
||||
def qmp(self, *args, **kwargs):
|
||||
return self._guest.qmp(*args, **kwargs)
|
||||
|
||||
|
@ -279,11 +285,13 @@ def main(vmcls):
|
|||
traceback.print_exc()
|
||||
return 2
|
||||
|
||||
if args.interactive:
|
||||
if vm.ssh(*cmd) == 0:
|
||||
return 0
|
||||
exitcode = 0
|
||||
if vm.ssh(*cmd) != 0:
|
||||
exitcode = 3
|
||||
if exitcode != 0 and args.interactive:
|
||||
vm.ssh()
|
||||
return 3
|
||||
else:
|
||||
if vm.ssh(*cmd) != 0:
|
||||
return 3
|
||||
|
||||
if not args.snapshot:
|
||||
vm.graceful_shutdown()
|
||||
|
||||
return exitcode
|
||||
|
|
Loading…
Reference in New Issue