On Thu, 20 Oct 2022 at 08:52, Thomas Huth <th...@redhat.com> wrote: > > On 19/10/2022 22.38, John Snow wrote: > > On Tue, Oct 18, 2022 at 6:23 AM Peter Maydell <peter.mayd...@linaro.org> > > wrote: > >> > >> If you run this single avocado test: > >> > >> while ./build/x86/tests/venv/bin/avocado run > >> build/x86/tests/avocado/boot_linux_console.py:BootLinuxConsole.test_arm_raspi2_initrd > >> ; do true; done > >> > >> then on my machine it will fail within 4 or 5 iterations. Has anybody > >> looked into this? Looking at a log from a failed test > >> https://people.linaro.org/~peter.maydell/raspi-avocado-fail.log > >> what seems to happen is that the test sends the "halt" command to > >> the guest. The DEBUG log reports a transition from RUNNING to > >> DISCONNECTING and the QMP connection disconnects, so presumably > >> the guest really did exit -- or is that something the test framework > >> is doing from its end? > [...] > > "Thanks for the analysis, but, like, what are you going to do to fix > > any of this?" > > > > Long term, an asyncio version of machine.py will help alleviate these > > kinds of race conditions when dealing with multiple sockets from > > Python as our testing requirements become more complex. > > > > Short term, I'm not sure... > > As a short term fix, what about simply changing the test > like this: > > diff a/tests/avocado/boot_linux_console.py > b/tests/avocado/boot_linux_console.py > --- 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', 'System halted') > # Wait for VM to shut down gracefully > self.vm.wait() > > By waiting for another console pattern that the guest sends > out after "halt", you can make sure that the connection is > not closed too early.
That is pretty much the patch I'm testing currently :-) -- PMM