[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[Qemu-devel] [PULL 17/52] tests/vm: proper guest shutdown
From: |
Alex Bennée |
Subject: |
[Qemu-devel] [PULL 17/52] tests/vm: proper guest shutdown |
Date: |
Fri, 7 Jun 2019 10:05:16 +0100 |
From: Gerd Hoffmann <address@hidden>
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 <address@hidden>
Tested-by: Thomas Huth <address@hidden>
Reviewed-by: Philippe Mathieu-Daudé <address@hidden>
Tested-by: Philippe Mathieu-Daudé <address@hidden>
Message-Id: <address@hidden>
Signed-off-by: Alex Bennée <address@hidden>
diff --git a/tests/vm/basevm.py b/tests/vm/basevm.py
index 395eefaec9..f27178f3c7 100755
--- a/tests/vm/basevm.py
+++ b/tests/vm/basevm.py
@@ -51,6 +51,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-",
@@ -202,6 +204,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)
@@ -278,11 +284,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
--
2.20.1
- [Qemu-devel] [PULL 08/52] tests/vm: Use python configured on build, (continued)
- [Qemu-devel] [PULL 08/52] tests/vm: Use python configured on build, Alex Bennée, 2019/06/07
- [Qemu-devel] [PULL 36/52] gdbstub: Implement continue (c pkt) with new infra, Alex Bennée, 2019/06/07
- [Qemu-devel] [PULL 38/52] gdbstub: Implement set_thread (H pkt) with new infra, Alex Bennée, 2019/06/07
- [Qemu-devel] [PULL 01/52] editorconfig: add setting for shell scripts, Alex Bennée, 2019/06/07
- [Qemu-devel] [PULL 03/52] tests/docker: Update the Fedora image to Fedora 30, Alex Bennée, 2019/06/07
- [Qemu-devel] [PULL 06/52] .travis.yml: bump gcc sanitiser job to gcc-9, Alex Bennée, 2019/06/07
- [Qemu-devel] [PULL 02/52] qemu-io-cmds: use clock_gettime for benchmarking, Alex Bennée, 2019/06/07
- [Qemu-devel] [PULL 07/52] .travis.yml: add clang ubsan job, Alex Bennée, 2019/06/07
- [Qemu-devel] [PULL 10/52] tests/vm: Fix build-centos docker-based tests run, Alex Bennée, 2019/06/07
- [Qemu-devel] [PULL 11/52] tests/vm: Add missing variables on help, Alex Bennée, 2019/06/07
- [Qemu-devel] [PULL 17/52] tests/vm: proper guest shutdown,
Alex Bennée <=
- [Qemu-devel] [PULL 42/52] gdbstub: Implement write memory (M pkt) with new infra, Alex Bennée, 2019/06/07
- [Qemu-devel] [PULL 51/52] gdbstub: Clear unused variables in gdb_handle_packet, Alex Bennée, 2019/06/07
- [Qemu-devel] [PULL 20/52] tests/vm: serial console support helpers, Alex Bennée, 2019/06/07
- [Qemu-devel] [PULL 32/52] cputlb: cast size_t to target_ulong before using for address masks, Alex Bennée, 2019/06/07
- [Qemu-devel] [PULL 15/52] tests/vm: use ssh with pty unconditionally, Alex Bennée, 2019/06/07
- [Qemu-devel] [PULL 30/52] tests/tcg/x86_64: add a PVH crt.o for x86_64 system tests, Alex Bennée, 2019/06/07
- [Qemu-devel] [PULL 23/52] tests/vm: netbsd autoinstall, using serial console, Alex Bennée, 2019/06/07
- [Qemu-devel] [PULL 26/52] semihosting: split console_out into string and char versions, Alex Bennée, 2019/06/07
- [Qemu-devel] [PULL 45/52] gdbstub: Implement read all registers (g pkt) with new infra, Alex Bennée, 2019/06/07
- [Qemu-devel] [PULL 29/52] tests/tcg: clean-up VPATH/TESTS for i386, Alex Bennée, 2019/06/07