diff options
author | Gerd Hoffmann <kraxel@redhat.com> | 2019-06-17 06:38:51 +0200 |
---|---|---|
committer | Alex Bennée <alex.bennee@linaro.org> | 2019-07-04 19:22:58 +0100 |
commit | b3f94b2f46222f088eef898a8eb51553e25be3fa (patch) | |
tree | c7c1b34cc28a889b76686d0bf749f363e1f6e164 /tests/vm | |
parent | 7f71d5051ef98427a4d2d73b952e7073de314083 (diff) |
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/vm')
-rwxr-xr-x | tests/vm/basevm.py | 22 |
1 files changed, 15 insertions, 7 deletions
diff --git a/tests/vm/basevm.py b/tests/vm/basevm.py index ceecc351f5..896e9d07c1 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 |