[PATCH 5/5] test/functional/aarch64: Split the ast2700a1-evb OpenBMC boot test

Cédric Le Goater posted 5 patches 1 month, 1 week ago
[PATCH 5/5] test/functional/aarch64: Split the ast2700a1-evb OpenBMC boot test
Posted by Cédric Le Goater 1 month, 1 week ago
The 'ast2700a1-evb' machine has two functional tests: one loading
firmware components into memory and another using a vbootrom
image. Both tests perform a full OpenBMC boot and run checks on I2C
and PCIe devices, which is redundant and time-consuming.

To save CI resources, the vbootrom test is refactored to focus on the
firmware boot process only. The OpenBMC boot verification logic is
split and a new verify_openbmc_boot_start() helper is introduced to
only wait for the kernel to start.

The vbootrom test now uses this function and the less essential I2C
and PCIe checks have been removed from this test case.

Cc: Thomas Huth <thuth@redhat.com>
Signed-off-by: Cédric Le Goater <clg@redhat.com>
---
 tests/functional/aarch64/test_aspeed_ast2700.py | 9 +++++----
 1 file changed, 5 insertions(+), 4 deletions(-)

diff --git a/tests/functional/aarch64/test_aspeed_ast2700.py b/tests/functional/aarch64/test_aspeed_ast2700.py
index a60dc1259f69..32c971e13528 100755
--- a/tests/functional/aarch64/test_aspeed_ast2700.py
+++ b/tests/functional/aarch64/test_aspeed_ast2700.py
@@ -37,11 +37,14 @@ def verify_vbootrom_firmware_flow(self):
         wait_for_console_pattern(self, 'done')
         wait_for_console_pattern(self, 'Jumping to BL31 (Trusted Firmware-A)')
 
-    def verify_openbmc_boot_and_login(self, name):
+    def verify_openbmc_boot_start(self):
         wait_for_console_pattern(self, 'U-Boot 2023.10')
         wait_for_console_pattern(self, '## Loading kernel from FIT Image')
         wait_for_console_pattern(self, 'Starting kernel ...')
 
+    def verify_openbmc_boot_and_login(self, name):
+        self.verify_openbmc_boot_start()
+
         wait_for_console_pattern(self, f'{name} login:')
         exec_command_and_wait_for_pattern(self, 'root', 'Password:')
         exec_command_and_wait_for_pattern(self, '0penBmc', f'root@{name}:~#')
@@ -141,9 +144,7 @@ def test_aarch64_ast2700a1_evb_sdk_vbootrom_v09_08(self):
         self.vm.add_args('-netdev', 'user,id=net1')
         self.start_ast2700_test_vbootrom('ast2700-default')
         self.verify_vbootrom_firmware_flow()
-        self.verify_openbmc_boot_and_login('ast2700-default')
-        self.do_ast2700_i2c_test()
-        self.do_ast2700_pcie_test()
+        self.verify_openbmc_boot_start()
 
 if __name__ == '__main__':
     QemuSystemTest.main()
-- 
2.51.0


Re: [PATCH 5/5] test/functional/aarch64: Split the ast2700a1-evb OpenBMC boot test
Posted by Thomas Huth 1 month, 1 week ago
On 07/10/2025 16.16, Cédric Le Goater wrote:
> The 'ast2700a1-evb' machine has two functional tests: one loading
> firmware components into memory and another using a vbootrom
> image. Both tests perform a full OpenBMC boot and run checks on I2C
> and PCIe devices, which is redundant and time-consuming.
> 
> To save CI resources, the vbootrom test is refactored to focus on the
> firmware boot process only. The OpenBMC boot verification logic is
> split and a new verify_openbmc_boot_start() helper is introduced to
> only wait for the kernel to start.
> 
> The vbootrom test now uses this function and the less essential I2C
> and PCIe checks have been removed from this test case.
> 
> Cc: Thomas Huth <thuth@redhat.com>
> Signed-off-by: Cédric Le Goater <clg@redhat.com>
> ---
>   tests/functional/aarch64/test_aspeed_ast2700.py | 9 +++++----
>   1 file changed, 5 insertions(+), 4 deletions(-)
> 
> diff --git a/tests/functional/aarch64/test_aspeed_ast2700.py b/tests/functional/aarch64/test_aspeed_ast2700.py
> index a60dc1259f69..32c971e13528 100755
> --- a/tests/functional/aarch64/test_aspeed_ast2700.py
> +++ b/tests/functional/aarch64/test_aspeed_ast2700.py
> @@ -37,11 +37,14 @@ def verify_vbootrom_firmware_flow(self):
>           wait_for_console_pattern(self, 'done')
>           wait_for_console_pattern(self, 'Jumping to BL31 (Trusted Firmware-A)')
>   
> -    def verify_openbmc_boot_and_login(self, name):
> +    def verify_openbmc_boot_start(self):
>           wait_for_console_pattern(self, 'U-Boot 2023.10')
>           wait_for_console_pattern(self, '## Loading kernel from FIT Image')
>           wait_for_console_pattern(self, 'Starting kernel ...')

The patch is a good idea ... but I'd maybe wait 'til the kernel really has 
been started, i.e. by waiting for it's initial output like "Linux version 
6.6.93" ?

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


> +    def verify_openbmc_boot_and_login(self, name):
> +        self.verify_openbmc_boot_start()
> +
>           wait_for_console_pattern(self, f'{name} login:')
>           exec_command_and_wait_for_pattern(self, 'root', 'Password:')
>           exec_command_and_wait_for_pattern(self, '0penBmc', f'root@{name}:~#')
> @@ -141,9 +144,7 @@ def test_aarch64_ast2700a1_evb_sdk_vbootrom_v09_08(self):
>           self.vm.add_args('-netdev', 'user,id=net1')
>           self.start_ast2700_test_vbootrom('ast2700-default')
>           self.verify_vbootrom_firmware_flow()
> -        self.verify_openbmc_boot_and_login('ast2700-default')
> -        self.do_ast2700_i2c_test()
> -        self.do_ast2700_pcie_test()
> +        self.verify_openbmc_boot_start()
>   
>   if __name__ == '__main__':
>       QemuSystemTest.main()


Re: [PATCH 5/5] test/functional/aarch64: Split the ast2700a1-evb OpenBMC boot test
Posted by Cédric Le Goater 1 month, 1 week ago
On 10/8/25 08:38, Thomas Huth wrote:
> On 07/10/2025 16.16, Cédric Le Goater wrote:
>> The 'ast2700a1-evb' machine has two functional tests: one loading
>> firmware components into memory and another using a vbootrom
>> image. Both tests perform a full OpenBMC boot and run checks on I2C
>> and PCIe devices, which is redundant and time-consuming.
>>
>> To save CI resources, the vbootrom test is refactored to focus on the
>> firmware boot process only. The OpenBMC boot verification logic is
>> split and a new verify_openbmc_boot_start() helper is introduced to
>> only wait for the kernel to start.
>>
>> The vbootrom test now uses this function and the less essential I2C
>> and PCIe checks have been removed from this test case.
>>
>> Cc: Thomas Huth <thuth@redhat.com>
>> Signed-off-by: Cédric Le Goater <clg@redhat.com>
>> ---
>>   tests/functional/aarch64/test_aspeed_ast2700.py | 9 +++++----
>>   1 file changed, 5 insertions(+), 4 deletions(-)
>>
>> diff --git a/tests/functional/aarch64/test_aspeed_ast2700.py b/tests/functional/aarch64/test_aspeed_ast2700.py
>> index a60dc1259f69..32c971e13528 100755
>> --- a/tests/functional/aarch64/test_aspeed_ast2700.py
>> +++ b/tests/functional/aarch64/test_aspeed_ast2700.py
>> @@ -37,11 +37,14 @@ def verify_vbootrom_firmware_flow(self):
>>           wait_for_console_pattern(self, 'done')
>>           wait_for_console_pattern(self, 'Jumping to BL31 (Trusted Firmware-A)')
>> -    def verify_openbmc_boot_and_login(self, name):
>> +    def verify_openbmc_boot_start(self):
>>           wait_for_console_pattern(self, 'U-Boot 2023.10')
>>           wait_for_console_pattern(self, '## Loading kernel from FIT Image')
>>           wait_for_console_pattern(self, 'Starting kernel ...')
> 
> The patch is a good idea ... but I'd maybe wait 'til the kernel really has been started, i.e. by waiting for it's initial output like "Linux version 6.6.93" ?

Sure.

I changed the wait pattern from 'Starting kernel ...' to 'Linux version '
without specifying the Linux kernel version since a change would be
needed whenever the SDK images are updated.

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


Thanks,

C.


> 
> 
>> +    def verify_openbmc_boot_and_login(self, name):
>> +        self.verify_openbmc_boot_start()
>> +
>>           wait_for_console_pattern(self, f'{name} login:')
>>           exec_command_and_wait_for_pattern(self, 'root', 'Password:')
>>           exec_command_and_wait_for_pattern(self, '0penBmc', f'root@{name}:~#')
>> @@ -141,9 +144,7 @@ def test_aarch64_ast2700a1_evb_sdk_vbootrom_v09_08(self):
>>           self.vm.add_args('-netdev', 'user,id=net1')
>>           self.start_ast2700_test_vbootrom('ast2700-default')
>>           self.verify_vbootrom_firmware_flow()
>> -        self.verify_openbmc_boot_and_login('ast2700-default')
>> -        self.do_ast2700_i2c_test()
>> -        self.do_ast2700_pcie_test()
>> +        self.verify_openbmc_boot_start()
>>   if __name__ == '__main__':
>>       QemuSystemTest.main()
> 


RE: [PATCH 5/5] test/functional/aarch64: Split the ast2700a1-evb OpenBMC boot test
Posted by Jamin Lin 1 month, 1 week ago
> The 'ast2700a1-evb' machine has two functional tests: one loading firmware
> components into memory and another using a vbootrom image. Both tests
> perform a full OpenBMC boot and run checks on I2C and PCIe devices, which
> is redundant and time-consuming.
> 
> To save CI resources, the vbootrom test is refactored to focus on the firmware
> boot process only. The OpenBMC boot verification logic is split and a new
> verify_openbmc_boot_start() helper is introduced to only wait for the kernel to
> start.
> 
> The vbootrom test now uses this function and the less essential I2C and PCIe
> checks have been removed from this test case.
> 
> Cc: Thomas Huth <thuth@redhat.com>
> Signed-off-by: Cédric Le Goater <clg@redhat.com>
> ---
>  tests/functional/aarch64/test_aspeed_ast2700.py | 9 +++++----
>  1 file changed, 5 insertions(+), 4 deletions(-)
> 
> diff --git a/tests/functional/aarch64/test_aspeed_ast2700.py
> b/tests/functional/aarch64/test_aspeed_ast2700.py
> index a60dc1259f69..32c971e13528 100755
> --- a/tests/functional/aarch64/test_aspeed_ast2700.py
> +++ b/tests/functional/aarch64/test_aspeed_ast2700.py
> @@ -37,11 +37,14 @@ def verify_vbootrom_firmware_flow(self):
>          wait_for_console_pattern(self, 'done')
>          wait_for_console_pattern(self, 'Jumping to BL31 (Trusted
> Firmware-A)')
> 
> -    def verify_openbmc_boot_and_login(self, name):
> +    def verify_openbmc_boot_start(self):
>          wait_for_console_pattern(self, 'U-Boot 2023.10')
>          wait_for_console_pattern(self, '## Loading kernel from FIT Image')
>          wait_for_console_pattern(self, 'Starting kernel ...')
> 
> +    def verify_openbmc_boot_and_login(self, name):
> +        self.verify_openbmc_boot_start()
> +
>          wait_for_console_pattern(self, f'{name} login:')
>          exec_command_and_wait_for_pattern(self, 'root', 'Password:')
>          exec_command_and_wait_for_pattern(self, '0penBmc',
> f'root@{name}:~#') @@ -141,9 +144,7 @@ def
> test_aarch64_ast2700a1_evb_sdk_vbootrom_v09_08(self):
>          self.vm.add_args('-netdev', 'user,id=net1')
>          self.start_ast2700_test_vbootrom('ast2700-default')
>          self.verify_vbootrom_firmware_flow()
> -        self.verify_openbmc_boot_and_login('ast2700-default')
> -        self.do_ast2700_i2c_test()
> -        self.do_ast2700_pcie_test()
> +        self.verify_openbmc_boot_start()
> 
>  if __name__ == '__main__':
>      QemuSystemTest.main()
> --
> 2.51.0

Reviewed-by: Jamin Lin <jamin_lin@aspeedtech.com>

Thanks,
Jamin