aboutsummaryrefslogtreecommitdiff
path: root/tests
diff options
context:
space:
mode:
authorGerd Hoffmann <kraxel@redhat.com>2019-06-17 06:38:51 +0200
committerAlex Bennée <alex.bennee@linaro.org>2019-07-04 19:22:58 +0100
commitb3f94b2f46222f088eef898a8eb51553e25be3fa (patch)
treec7c1b34cc28a889b76686d0bf749f363e1f6e164 /tests
parent7f71d5051ef98427a4d2d73b952e7073de314083 (diff)
downloadqemu-b3f94b2f46222f088eef898a8eb51553e25be3fa.zip
qemu-b3f94b2f46222f088eef898a8eb51553e25be3fa.tar.gz
qemu-b3f94b2f46222f088eef898a8eb51553e25be3fa.tar.bz2
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>
Diffstat (limited to 'tests')
-rwxr-xr-xtests/vm/basevm.py22
1 files changed, 15 insertions, 7 deletions
diff --git a/tests/vm/basevm.py b/tests/vm/basevm.py
index ceecc35..896e9d0 100755
--- a/tests/vm/basevm.py
+++ b/tests/vm/basevm.py
@@ -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