test: Detect dead connections
When the connection to a board dies, assume it is dead forever until some user action is taken. Skip all remaining tests. This avoids CI runs taking an hour, with hundreds of 30-second timeouts all to no avail. Signed-off-by: Simon Glass <sjg@chromium.org>
This commit is contained in:
@@ -24,6 +24,7 @@ import pytest
|
||||
import re
|
||||
from _pytest.runner import runtestprotocol
|
||||
import sys
|
||||
from u_boot_spawn import BootFail, Timeout, Unexpected, handle_exception
|
||||
|
||||
# Globals: The HTML log file, and the connection to the U-Boot console.
|
||||
log = None
|
||||
@@ -254,6 +255,7 @@ def pytest_configure(config):
|
||||
ubconfig.board_identity = board_identity
|
||||
ubconfig.gdbserver = gdbserver
|
||||
ubconfig.dtb = build_dir + '/arch/sandbox/dts/test.dtb'
|
||||
ubconfig.connection_ok = True
|
||||
|
||||
env_vars = (
|
||||
'board_type',
|
||||
@@ -420,8 +422,21 @@ def u_boot_console(request):
|
||||
Returns:
|
||||
The fixture value.
|
||||
"""
|
||||
|
||||
console.ensure_spawned()
|
||||
if not ubconfig.connection_ok:
|
||||
pytest.skip('Cannot get target connection')
|
||||
return None
|
||||
try:
|
||||
console.ensure_spawned()
|
||||
except OSError as err:
|
||||
handle_exception(ubconfig, console, log, err, 'Lab failure', True)
|
||||
except Timeout as err:
|
||||
handle_exception(ubconfig, console, log, err, 'Lab timeout', True)
|
||||
except BootFail as err:
|
||||
handle_exception(ubconfig, console, log, err, 'Boot fail', True,
|
||||
console.get_spawn_output())
|
||||
except Unexpected:
|
||||
handle_exception(ubconfig, console, log, err, 'Unexpected test output',
|
||||
False)
|
||||
return console
|
||||
|
||||
anchors = {}
|
||||
|
Reference in New Issue
Block a user