mirror of
https://github.com/u-boot/u-boot.git
synced 2025-04-18 02:44:37 +00:00
test: Add a test for booting Ubuntu 24.04
Now that U-Boot can boot this quickly, using kvm, add a test that the installer starts up correctly. Use the qemu-x86_64 board in the SJG lab. Signed-off-by: Simon Glass <sjg@chromium.org>
This commit is contained in:
parent
59001e758a
commit
a3d255d996
2 changed files with 68 additions and 1 deletions
|
@ -565,7 +565,7 @@ coreboot test.py:
|
||||||
- export USE_LABGRID_SJG=1
|
- export USE_LABGRID_SJG=1
|
||||||
# export verbose="-v"
|
# export verbose="-v"
|
||||||
- ${SRC}/test/py/test.py --role ${ROLE} --build-dir "${OUT}"
|
- ${SRC}/test/py/test.py --role ${ROLE} --build-dir "${OUT}"
|
||||||
--capture=tee-sys -k "not bootstd" || ret=$?
|
--capture=tee-sys -k "not bootstd ${TEST_PY_TEST_SPEC}" || ret=$?
|
||||||
- U_BOOT_BOARD_IDENTITY="${ROLE}" u-boot-test-release || true
|
- U_BOOT_BOARD_IDENTITY="${ROLE}" u-boot-test-release || true
|
||||||
- if [[ $ret -ne 0 ]]; then
|
- if [[ $ret -ne 0 ]]; then
|
||||||
exit $ret;
|
exit $ret;
|
||||||
|
@ -702,3 +702,9 @@ vf2:
|
||||||
variables:
|
variables:
|
||||||
ROLE: vf2
|
ROLE: vf2
|
||||||
<<: *lab_dfn
|
<<: *lab_dfn
|
||||||
|
|
||||||
|
qemu-x86_64:
|
||||||
|
variables:
|
||||||
|
ROLE: qemu-x86_64
|
||||||
|
TEST_PY_TEST_SPEC: "and not sleep"
|
||||||
|
<<: *lab_dfn
|
||||||
|
|
61
test/py/tests/test_distro.py
Normal file
61
test/py/tests/test_distro.py
Normal file
|
@ -0,0 +1,61 @@
|
||||||
|
# SPDX-License-Identifier: GPL-2.0+
|
||||||
|
# Copyright 2025 Canonical Ltd.
|
||||||
|
# Written by Simon Glass <simon.glass@canonical.com>
|
||||||
|
|
||||||
|
import pytest
|
||||||
|
|
||||||
|
# Enable early console so that the test can see if something goes wrong
|
||||||
|
CONSOLE = 'earlycon=uart8250,io,0x3f8 console=uart8250,io,0x3f8'
|
||||||
|
|
||||||
|
@pytest.mark.boardspec('qemu-x86_64')
|
||||||
|
@pytest.mark.role('qemu-x86_64')
|
||||||
|
def test_distro(ubman):
|
||||||
|
"""Test that of-platdata can be generated and used in sandbox"""
|
||||||
|
with ubman.log.section('boot'):
|
||||||
|
ubman.run_command('boot', wait_for_prompt=False)
|
||||||
|
|
||||||
|
with ubman.log.section('Grub'):
|
||||||
|
# Wait for grub to come up and offset a menu
|
||||||
|
ubman.p.expect(['Try or Install Ubuntu'])
|
||||||
|
|
||||||
|
# Press 'e' to edit the command line
|
||||||
|
ubman.log.info("Pressing 'e'")
|
||||||
|
ubman.run_command('e', wait_for_prompt=False, send_nl=False)
|
||||||
|
|
||||||
|
# Wait until we see the editor appear
|
||||||
|
ubman.p.expect(['/casper/initrd'])
|
||||||
|
|
||||||
|
# Go down to the 'linux' line. Avoid using down-arrow as that includes
|
||||||
|
# an Escape character, which may be parsed by Grub as such, causing it
|
||||||
|
# to return to the top menu
|
||||||
|
ubman.log.info("Going DOWN")
|
||||||
|
ubman.ctrl('N')
|
||||||
|
ubman.ctrl('N')
|
||||||
|
ubman.ctrl('N')
|
||||||
|
|
||||||
|
# Go to end of line
|
||||||
|
ubman.log.info("Going to EOL")
|
||||||
|
ubman.ctrl('E')
|
||||||
|
|
||||||
|
# Backspace to remove 'quiet splash'
|
||||||
|
ubman.log.info("Erasing quiet and splash")
|
||||||
|
ubman.send('\b' * len('quiet splash'))
|
||||||
|
|
||||||
|
# Send our noisy console
|
||||||
|
ubman.log.info("Noisy console")
|
||||||
|
ubman.send(CONSOLE)
|
||||||
|
|
||||||
|
# Tell grub to boot
|
||||||
|
ubman.log.info("boot")
|
||||||
|
ubman.ctrl('X')
|
||||||
|
ubman.p.expect(['Booting a command list'])
|
||||||
|
|
||||||
|
with ubman.log.section('Linux'):
|
||||||
|
# Linux should start immediately
|
||||||
|
ubman.p.expect(['Linux version'])
|
||||||
|
|
||||||
|
with ubman.log.section('Ubuntu'):
|
||||||
|
# Shortly later, we should see this banner
|
||||||
|
ubman.p.expect(['Welcome to .*Ubuntu 24.04.1 LTS.*!'])
|
||||||
|
|
||||||
|
ubman.restart_uboot()
|
Loading…
Add table
Reference in a new issue