]> Git Repo - qemu.git/commitdiff
tests/vm: proper guest shutdown
authorGerd Hoffmann <[email protected]>
Mon, 17 Jun 2019 04:38:51 +0000 (06:38 +0200)
committerAlex Bennée <[email protected]>
Thu, 4 Jul 2019 18:22:58 +0000 (19:22 +0100)
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 <[email protected]>
Tested-by: Thomas Huth <[email protected]>
Reviewed-by: Philippe Mathieu-Daudé <[email protected]>
Tested-by: Philippe Mathieu-Daudé <[email protected]>
Message-Id: <20190617043858[email protected]>
Signed-off-by: Alex Bennée <[email protected]>
tests/vm/basevm.py

index ceecc351f56b4ee1a4284a24ef3d1f4798d12ae4..896e9d07c10dadbce79a499191a5ce7bba44607c 100755 (executable)
@@ -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
This page took 0.027927 seconds and 4 git commands to generate.