qemu-devel
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: [PATCH] tests/avocado: raspi2_initrd: Wait for guest shutdown messag


From: Thomas Huth
Subject: Re: [PATCH] tests/avocado: raspi2_initrd: Wait for guest shutdown message before stopping
Date: Thu, 20 Oct 2022 12:25:54 +0200
User-agent: Mozilla/5.0 (X11; Linux x86_64; rv:91.0) Gecko/20100101 Thunderbird/91.13.0

On 20/10/2022 12.20, Peter Maydell wrote:
The avocado test
  tests/avocado/boot_linux_console.py:BootLinuxConsole.test_arm_raspi2_initrd
finishes wiith

     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>
---
  tests/avocado/boot_linux_console.py | 2 +-
  1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/tests/avocado/boot_linux_console.py 
b/tests/avocado/boot_linux_console.py
index ca9d09b0d7c..eed4b49e6e4 100644
--- a/tests/avocado/boot_linux_console.py
+++ b/tests/avocado/boot_linux_console.py
@@ -489,7 +489,7 @@ def test_arm_raspi2_initrd(self):
                                                  'BCM2835')
          exec_command_and_wait_for_pattern(self, 'cat /proc/iomem',
                                                  '/soc/cprman@7e101000')
-        exec_command(self, 'halt')
+        exec_command_and_wait_for_pattern(self, 'halt', 'reboot: System 
halted')
          # Wait for VM to shut down gracefully
          self.vm.wait()

Reviewed-by: Thomas Huth <thuth@redhat.com>




reply via email to

[Prev in Thread] Current Thread [Next in Thread]