qemu-devel.nongnu.org archive mirror
 help / color / mirror / Atom feed
* [PATCH] tests/avocado/machine_aspeed.py: Reduce noise on the console for SDK tests
@ 2022-11-04  7:53 Cédric Le Goater
  2022-11-04  9:41 ` Philippe Mathieu-Daudé
  0 siblings, 1 reply; 3+ messages in thread
From: Cédric Le Goater @ 2022-11-04  7:53 UTC (permalink / raw)
  To: qemu-arm, qemu-devel
  Cc: Peter Maydell, Joel Stanley, Andrew Jeffery, Alex Bennée,
	Cédric Le Goater

The Aspeed SDK images are based on OpenBMC which starts a lot of
services. The output noise on the console can break from time to time
the test waiting for the logging prompt.

Change the U-Boot bootargs variable to add "quiet" to the kernel
command line and reduce the output volume. This also drops the test on
the CPU id which was nice to have but not essential.

Signed-off-by: Cédric Le Goater <clg@kaod.org>
---
 tests/avocado/machine_aspeed.py | 17 ++++++++++++-----
 1 file changed, 12 insertions(+), 5 deletions(-)

diff --git a/tests/avocado/machine_aspeed.py b/tests/avocado/machine_aspeed.py
index fba6527026..1fc385e1c8 100644
--- a/tests/avocado/machine_aspeed.py
+++ b/tests/avocado/machine_aspeed.py
@@ -12,6 +12,7 @@
 from avocado_qemu import wait_for_console_pattern
 from avocado_qemu import exec_command
 from avocado_qemu import exec_command_and_wait_for_pattern
+from avocado_qemu import interrupt_interactive_console_until_pattern
 from avocado.utils import archive
 from avocado import skipIf
 
@@ -182,6 +183,8 @@ def test_arm_ast2600_evb_buildroot(self):
 
 class AST2x00MachineSDK(QemuSystemTest):
 
+    EXTRA_BOOTARGS = ' quiet'
+
     # FIXME: Although these tests boot a whole distro they are still
     # slower than comparable machine models. There may be some
     # optimisations which bring down the runtime. In the meantime they
@@ -194,7 +197,7 @@ def wait_for_console_pattern(self, success_message, vm=None):
                                  failure_message='Kernel panic - not syncing',
                                  vm=vm)
 
-    def do_test_arm_aspeed_sdk_start(self, image, cpu_id):
+    def do_test_arm_aspeed_sdk_start(self, image):
         self.require_netdev('user')
         self.vm.set_console()
         self.vm.add_args('-drive', 'file=' + image + ',if=mtd,format=raw',
@@ -202,9 +205,13 @@ def do_test_arm_aspeed_sdk_start(self, image, cpu_id):
         self.vm.launch()
 
         self.wait_for_console_pattern('U-Boot 2019.04')
-        self.wait_for_console_pattern('## Loading kernel from FIT Image')
+        interrupt_interactive_console_until_pattern(
+            self, 'Hit any key to stop autoboot:', 'ast#')
+        exec_command_and_wait_for_pattern(
+            self, 'setenv bootargs ${bootargs}' + self.EXTRA_BOOTARGS, 'ast#')
+        exec_command_and_wait_for_pattern(
+            self, 'boot', '## Loading kernel from FIT Image')
         self.wait_for_console_pattern('Starting kernel ...')
-        self.wait_for_console_pattern('Booting Linux on physical CPU ' + cpu_id)
 
     @skipIf(os.getenv('GITLAB_CI'), 'Running on GitLab')
     def test_arm_ast2500_evb_sdk(self):
@@ -221,7 +228,7 @@ def test_arm_ast2500_evb_sdk(self):
         archive.extract(image_path, self.workdir)
 
         self.do_test_arm_aspeed_sdk_start(
-            self.workdir + '/ast2500-default/image-bmc', '0x0')
+            self.workdir + '/ast2500-default/image-bmc')
         self.wait_for_console_pattern('ast2500-default login:')
 
     @skipIf(os.getenv('GITLAB_CI'), 'Running on GitLab')
@@ -243,7 +250,7 @@ def test_arm_ast2600_evb_sdk(self):
         self.vm.add_args('-device',
                          'ds1338,bus=aspeed.i2c.bus.5,address=0x32');
         self.do_test_arm_aspeed_sdk_start(
-            self.workdir + '/ast2600-default/image-bmc', '0xf00')
+            self.workdir + '/ast2600-default/image-bmc')
         self.wait_for_console_pattern('ast2600-default login:')
         exec_command_and_wait_for_pattern(self, 'root', 'Password:')
         exec_command_and_wait_for_pattern(self, '0penBmc', 'root@ast2600-default:~#')
-- 
2.38.1



^ permalink raw reply related	[flat|nested] 3+ messages in thread

* Re: [PATCH] tests/avocado/machine_aspeed.py: Reduce noise on the console for SDK tests
  2022-11-04  7:53 [PATCH] tests/avocado/machine_aspeed.py: Reduce noise on the console for SDK tests Cédric Le Goater
@ 2022-11-04  9:41 ` Philippe Mathieu-Daudé
  2022-11-04 15:09   ` Cédric Le Goater
  0 siblings, 1 reply; 3+ messages in thread
From: Philippe Mathieu-Daudé @ 2022-11-04  9:41 UTC (permalink / raw)
  To: Cédric Le Goater, qemu-arm, qemu-devel
  Cc: Peter Maydell, Joel Stanley, Andrew Jeffery, Alex Bennée

On 4/11/22 08:53, Cédric Le Goater wrote:
> The Aspeed SDK images are based on OpenBMC which starts a lot of
> services. The output noise on the console can break from time to time
> the test waiting for the logging prompt.

IIUC OpenBMC uses systemd, so you can mask pointless services from
the kernel cmdline. See for example test_arm_quanta_gsj():

  # Disable drivers and services that stall for a long time during boot,
  # to avoid running past the 90-second timeout. These may be removed
  # as the corresponding device support is added.
  kernel_command_line = self.KERNEL_COMMON_COMMAND_LINE + (
          'console=${console} '
          'mem=${mem} '
          'initcall_blacklist=npcm_i2c_bus_driver_init '
          'systemd.mask=systemd-random-seed.service '
          'systemd.mask=dropbearkey.service '
  )

> Change the U-Boot bootargs variable to add "quiet" to the kernel
> command line and reduce the output volume. This also drops the test on
> the CPU id which was nice to have but not essential.
> 
> Signed-off-by: Cédric Le Goater <clg@kaod.org>
> ---
>   tests/avocado/machine_aspeed.py | 17 ++++++++++++-----
>   1 file changed, 12 insertions(+), 5 deletions(-)
> 
> diff --git a/tests/avocado/machine_aspeed.py b/tests/avocado/machine_aspeed.py
> index fba6527026..1fc385e1c8 100644
> --- a/tests/avocado/machine_aspeed.py
> +++ b/tests/avocado/machine_aspeed.py
> @@ -12,6 +12,7 @@
>   from avocado_qemu import wait_for_console_pattern
>   from avocado_qemu import exec_command
>   from avocado_qemu import exec_command_and_wait_for_pattern
> +from avocado_qemu import interrupt_interactive_console_until_pattern
>   from avocado.utils import archive
>   from avocado import skipIf
>   
> @@ -182,6 +183,8 @@ def test_arm_ast2600_evb_buildroot(self):
>   
>   class AST2x00MachineSDK(QemuSystemTest):
>   
> +    EXTRA_BOOTARGS = ' quiet'

Maybe less bug-prone to handle the spaces around EXTRA_BOOTARGS where
the variable is used.

> -    def do_test_arm_aspeed_sdk_start(self, image, cpu_id):
> +    def do_test_arm_aspeed_sdk_start(self, image):
>           self.require_netdev('user')
>           self.vm.set_console()
>           self.vm.add_args('-drive', 'file=' + image + ',if=mtd,format=raw',
> @@ -202,9 +205,13 @@ def do_test_arm_aspeed_sdk_start(self, image, cpu_id):
>           self.vm.launch()
>   
>           self.wait_for_console_pattern('U-Boot 2019.04')
> -        self.wait_for_console_pattern('## Loading kernel from FIT Image')
> +        interrupt_interactive_console_until_pattern(
> +            self, 'Hit any key to stop autoboot:', 'ast#')
> +        exec_command_and_wait_for_pattern(
> +            self, 'setenv bootargs ${bootargs}' + self.EXTRA_BOOTARGS, 'ast#')
> +        exec_command_and_wait_for_pattern(
> +            self, 'boot', '## Loading kernel from FIT Image')
>           self.wait_for_console_pattern('Starting kernel ...')
> -        self.wait_for_console_pattern('Booting Linux on physical CPU ' + cpu_id)



^ permalink raw reply	[flat|nested] 3+ messages in thread

* Re: [PATCH] tests/avocado/machine_aspeed.py: Reduce noise on the console for SDK tests
  2022-11-04  9:41 ` Philippe Mathieu-Daudé
@ 2022-11-04 15:09   ` Cédric Le Goater
  0 siblings, 0 replies; 3+ messages in thread
From: Cédric Le Goater @ 2022-11-04 15:09 UTC (permalink / raw)
  To: Philippe Mathieu-Daudé, qemu-arm, qemu-devel
  Cc: Peter Maydell, Joel Stanley, Andrew Jeffery, Alex Bennée

On 11/4/22 10:41, Philippe Mathieu-Daudé wrote:
> On 4/11/22 08:53, Cédric Le Goater wrote:
>> The Aspeed SDK images are based on OpenBMC which starts a lot of
>> services. The output noise on the console can break from time to time
>> the test waiting for the logging prompt.
> 
> IIUC OpenBMC uses systemd, so you can mask pointless services from
> the kernel cmdline. See for example test_arm_quanta_gsj():
> 
>   # Disable drivers and services that stall for a long time during boot,
>   # to avoid running past the 90-second timeout. These may be removed
>   # as the corresponding device support is added.
>   kernel_command_line = self.KERNEL_COMMON_COMMAND_LINE + (
>           'console=${console} '
>           'mem=${mem} '
>           'initcall_blacklist=npcm_i2c_bus_driver_init '
>           'systemd.mask=systemd-random-seed.service '
>           'systemd.mask=dropbearkey.service '
>   )

Good idea. I will respin with some extra disablement to reduce the
number of services, specially the ones requiring devices without
a backing model in QEMU.
  
> 
>> Change the U-Boot bootargs variable to add "quiet" to the kernel
>> command line and reduce the output volume. This also drops the test on
>> the CPU id which was nice to have but not essential.
>>
>> Signed-off-by: Cédric Le Goater <clg@kaod.org>
>> ---
>>   tests/avocado/machine_aspeed.py | 17 ++++++++++++-----
>>   1 file changed, 12 insertions(+), 5 deletions(-)
>>
>> diff --git a/tests/avocado/machine_aspeed.py b/tests/avocado/machine_aspeed.py
>> index fba6527026..1fc385e1c8 100644
>> --- a/tests/avocado/machine_aspeed.py
>> +++ b/tests/avocado/machine_aspeed.py
>> @@ -12,6 +12,7 @@
>>   from avocado_qemu import wait_for_console_pattern
>>   from avocado_qemu import exec_command
>>   from avocado_qemu import exec_command_and_wait_for_pattern
>> +from avocado_qemu import interrupt_interactive_console_until_pattern
>>   from avocado.utils import archive
>>   from avocado import skipIf
>> @@ -182,6 +183,8 @@ def test_arm_ast2600_evb_buildroot(self):
>>   class AST2x00MachineSDK(QemuSystemTest):
>> +    EXTRA_BOOTARGS = ' quiet'
> 
> Maybe less bug-prone to handle the spaces around EXTRA_BOOTARGS where
> the variable is used.

sure.

Thanks,

C.


> 
>> -    def do_test_arm_aspeed_sdk_start(self, image, cpu_id):
>> +    def do_test_arm_aspeed_sdk_start(self, image):
>>           self.require_netdev('user')
>>           self.vm.set_console()
>>           self.vm.add_args('-drive', 'file=' + image + ',if=mtd,format=raw',
>> @@ -202,9 +205,13 @@ def do_test_arm_aspeed_sdk_start(self, image, cpu_id):
>>           self.vm.launch()
>>           self.wait_for_console_pattern('U-Boot 2019.04')
>> -        self.wait_for_console_pattern('## Loading kernel from FIT Image')
>> +        interrupt_interactive_console_until_pattern(
>> +            self, 'Hit any key to stop autoboot:', 'ast#')
>> +        exec_command_and_wait_for_pattern(
>> +            self, 'setenv bootargs ${bootargs}' + self.EXTRA_BOOTARGS, 'ast#')
>> +        exec_command_and_wait_for_pattern(
>> +            self, 'boot', '## Loading kernel from FIT Image')
>>           self.wait_for_console_pattern('Starting kernel ...')
>> -        self.wait_for_console_pattern('Booting Linux on physical CPU ' + cpu_id)
> 



^ permalink raw reply	[flat|nested] 3+ messages in thread

end of thread, other threads:[~2022-11-04 15:11 UTC | newest]

Thread overview: 3+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2022-11-04  7:53 [PATCH] tests/avocado/machine_aspeed.py: Reduce noise on the console for SDK tests Cédric Le Goater
2022-11-04  9:41 ` Philippe Mathieu-Daudé
2022-11-04 15:09   ` Cédric Le Goater

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).