
On Fri, Jan 12, 2024 at 03:31:25PM +0530, Love Kumar wrote:
Add tests for booting image using tftpboot/pxe boot commands, tftpboot boot case loads the FIT image into DDR and boots using bootm command whereas pxe boot cases downloads the pxe configuration file from the TFTP server and interprets it to boot the images mentioned in the pxe configurations file. This test relies on boardenv_* containing configuration values including the parameter 'pattern'. tftpboot/pxe boot cases boots the Linux till the boot log pattern value is matched. For example, if the parameter 'pattern' is defined as 'login:', it will boot till login prompt.
Signed-off-by: Love Kumar love.kumar@amd.com
[snip]
+def setup_tftpboot_boot(u_boot_console):
- f = u_boot_console.config.env.get('env__net_tftp_bootable_file', None)
- if not f:
pytest.skip('No TFTP bootable file to read')
- test_net.test_net_dhcp(u_boot_console)
- test_net.test_net_setup_static(u_boot_console)
This means we skip the tests unless both DHCP and static networking are configured and it's valid to only configure DHCP (or static), so I would suggest re-running static only if dhcp fails.
[snip]
+@pytest.mark.buildconfigspec('cmd_net') +def test_net_tftpboot_boot(u_boot_console):
- """Boot the loaded image
- A boot file (fit image) is downloaded from the TFTP server and booted using
- bootm command with the default fit configuration, its boot log pattern are
- validated.
- The details of the file to download are provided by the boardenv_* file;
- see the comment at the beginning of this file.
- """
I guess we need a way to skip just this test? My valid FIT image doesn't have a default config.
[snip]
- addr, pattern, timeout, imcfg = setup_tftpboot_boot(u_boot_console)
- response = u_boot_console.run_command('imi %x' % addr)
- if not imcfg or not imcfg in response:
pytest.skip('The custom configuration not found')
- with u_boot_console.temporary_timeout(timeout):
try:
u_boot_console.run_command(
'bootm %x#%s' % (addr, imcfg), wait_for_prompt=False
)
u_boot_console.wait_for(pattern)
finally:
u_boot_console.drain_console()
u_boot_console.cleanup_spawn()
Lets skip running imi to confirm the FIT image has the config, bootm addr#invalid-config will fail itself (and my test FIT is so big we timeout).
But I am happy the direction this is going in, with some local hacks for the above I was able to do the tftpboot + bootm test on hardware. I'll follow https://wiki.debian.org/PXEBootInstall#Provide_the_boot_image to get a PXE setup as well for next time.