]> www.infradead.org Git - qemu-nvme.git/commit
tests/avocado: raspi2_initrd: Wait for guest shutdown message before stopping
authorPeter Maydell <peter.maydell@linaro.org>
Thu, 27 Oct 2022 18:36:25 +0000 (19:36 +0100)
committerAlex Bennée <alex.bennee@linaro.org>
Mon, 31 Oct 2022 20:37:59 +0000 (20:37 +0000)
commitcc45d25c65cf69b54fda0794ef74f53daaa272c2
tree47cda14d9bd88f4c618d15444c23191c24fb9b72
parent5104b73824670316b1ae1736054e4ba8ab77f345
tests/avocado: raspi2_initrd: Wait for guest shutdown message before stopping

The avocado test
 tests/avocado/boot_linux_console.py:BootLinuxConsole.test_arm_raspi2_initrd
finishes with

    exec_command(self, 'halt')
    # Wait for VM to shut down gracefully
    self.vm.wait()

In theory this should be fine. In practice it runs into two bugs:

 * when the test calls self.vm.wait() Avocado closes the socket
   connection to the guest serial console immediately, so the
   avocado logs don't have the last part of the guest output:
   https://gitlab.com/qemu-project/qemu/-/issues/1265
 * when the socket is closed, a bug in the QEMU socket chardev
   means that it loses any data that the guest UART has not
   yet consumed. This means that the guest doesn't always read
   the full 'halt' command string, so the test intermittently
   fails with a timeout:
   https://gitlab.com/qemu-project/qemu/-/issues/1264

Work around both of these by waiting for the guest to print the
string that means it has completed the shutdown process.  This fixes
a very long standing intermittent failure in this test.

Resolves: https://gitlab.com/qemu-project/qemu/-/issues/636
Signed-off-by: Peter Maydell <peter.maydell@linaro.org>
Signed-off-by: Alex Bennée <alex.bennee@linaro.org>
Reviewed-by: Richard Henderson <richard.henderson@linaro.org>
Reviewed-by: Philippe Mathieu-Daudé <philmd@linaro.org>
Reviewed-by: Thomas Huth <thuth@redhat.com>
Message-Id: <20221020102012.3015662-1-peter.maydell@linaro.org>
Message-Id: <20221027183637.2772968-20-alex.bennee@linaro.org>
tests/avocado/boot_linux_console.py