提交 b3f94b2f 编写于 作者: G Gerd Hoffmann 提交者: Alex Bennée

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: NGerd Hoffmann <kraxel@redhat.com>
Tested-by: NThomas Huth <thuth@redhat.com>
Reviewed-by: NPhilippe Mathieu-Daudé <philmd@redhat.com>
Tested-by: NPhilippe Mathieu-Daudé <philmd@redhat.com>
Message-Id: <20190617043858.8290-5-kraxel@redhat.com>
Signed-off-by: NAlex Bennée <alex.bennee@linaro.org>
上级 7f71d505
......@@ -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 @@ class BaseVM(object):
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
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册