[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: [PATCH] tests/avocado: raspi2_initrd: Wait for guest shutdown messag
From: |
John Snow |
Subject: |
Re: [PATCH] tests/avocado: raspi2_initrd: Wait for guest shutdown message before stopping |
Date: |
Thu, 20 Oct 2022 11:06:34 -0400 |
On Thu, Oct 20, 2022 at 6:20 AM Peter Maydell <peter.maydell@linaro.org> 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()
LGTM!
Already staged, but just for formality's sake:
Reviewed-by: John Snow <jsnow@redhat.com>