mirror of
https://github.com/u-boot/u-boot.git
synced 2025-04-19 03:15:00 +00:00
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:
parent
22d238f25d
commit
bded9f13b2
1 changed files with 67 additions and 0 deletions
67
test/py/tests/test_bootstage.py
Normal file
67
test/py/tests/test_bootstage.py
Normal 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')
|
Loading…
Add table
Reference in a new issue