test/py: bootstage: Add test for bootstage command

Add test cases for bootstage command to print the bootstage report, to
stash the data into memory and to unstash the data from memory.

Signed-off-by: Love Kumar <love.kumar@amd.com>
This commit is contained in:
Love Kumar 2024-01-09 14:39:57 +05:30 committed by Tom Rini
parent 22d238f25d
commit bded9f13b2

View file

@ -0,0 +1,67 @@
# SPDX-License-Identifier: GPL-2.0
# (C) Copyright 2023, Advanced Micro Devices, Inc.
import pytest
"""
Test the bootstage command.
It is used for checking the boot progress and timing by printing the bootstage
report, stashes the data into memory and unstashes the data from memory.
Note: This test relies on boardenv_* containing configuration values to define
the data size, memory address, and bootstage magic address (defined in
common/bootstage.c). Without this, bootstage stash and unstash tests will be
automatically skipped.
For example:
env__bootstage_cmd_file = {
'addr': 0x200000,
'size': 0x1000,
'bootstage_magic_addr': 0xb00757a3,
}
"""
@pytest.mark.buildconfigspec('bootstage')
@pytest.mark.buildconfigspec('cmd_bootstage')
def test_bootstage_report(u_boot_console):
output = u_boot_console.run_command('bootstage report')
assert 'Timer summary in microseconds' in output
assert 'Accumulated time:' in output
assert 'dm_r' in output
@pytest.mark.buildconfigspec('bootstage')
@pytest.mark.buildconfigspec('cmd_bootstage')
@pytest.mark.buildconfigspec('bootstage_stash')
def test_bootstage_stash(u_boot_console):
f = u_boot_console.config.env.get('env__bootstage_cmd_file', None)
if not f:
pytest.skip('No bootstage environment file is defined')
addr = f.get('addr')
size = f.get('size')
bootstage_magic = f.get('bootstage_magic_addr')
expected_text = 'dm_r'
u_boot_console.run_command('bootstage stash %x %x' % (addr, size))
output = u_boot_console.run_command('echo $?')
assert output.endswith('0')
output = u_boot_console.run_command('md %x 100' % addr)
# Check BOOTSTAGE_MAGIC address at 4th byte address
assert '0x' + output.split('\n')[0].split()[4] == hex(bootstage_magic)
# Check expected string in last column of output
output_last_col = ''.join([i.split()[-1] for i in output.split('\n')])
assert expected_text in output_last_col
return addr, size
@pytest.mark.buildconfigspec('bootstage')
@pytest.mark.buildconfigspec('cmd_bootstage')
@pytest.mark.buildconfigspec('bootstage_stash')
def test_bootstage_unstash(u_boot_console):
addr, size = test_bootstage_stash(u_boot_console)
u_boot_console.run_command('bootstage unstash %x %x' % (addr, size))
output = u_boot_console.run_command('echo $?')
assert output.endswith('0')