[PATCH v3 08/19] test: Introduce the concept of a role
Tom Rini
trini at konsulko.com
Mon Jun 24 20:13:03 CEST 2024
On Sun, Jun 23, 2024 at 02:32:02PM -0600, Simon Glass wrote:
> In Labgrid there is the concept of a 'role', which is similar to the
> U-Boot board ID in U-Boot's pytest subsystem.
>
> The role indicates both the target and information about the U-Boot
> build to use. It can also provide any amount of other configuration.
> The information is obtained using the 'labgrid-client query' operation.
>
> Make use of this in tests, so that only the role is required in gitlab
> and other situations. The board type and other things can be queried
> as needed.
>
> Use a new 'u-boot-test-getrole' script to obtain the requested
> information.
>
> With this it is possible to run lab tests in gitlab with just a single
> 'ROLE' variable for each board.
>
> Signed-off-by: Simon Glass <sjg at chromium.org>
> ---
>
> (no changes since v1)
>
> test/py/conftest.py | 31 +++++++++++++++++++++++++++----
> 1 file changed, 27 insertions(+), 4 deletions(-)
>
> diff --git a/test/py/conftest.py b/test/py/conftest.py
> index 6547c6922c6..5de8d7b0e23 100644
> --- a/test/py/conftest.py
> +++ b/test/py/conftest.py
> @@ -23,6 +23,7 @@ from pathlib import Path
> import pytest
> import re
> from _pytest.runner import runtestprotocol
> +import subprocess
> import sys
>
> # Globals: The HTML log file, and the connection to the U-Boot console.
> @@ -79,6 +80,7 @@ def pytest_addoption(parser):
> parser.addoption('--gdbserver', default=None,
> help='Run sandbox under gdbserver. The argument is the channel '+
> 'over which gdbserver should communicate, e.g. localhost:1234')
> + parser.addoption('--role', help='U-Boot board role (for Labgrid)')
> parser.addoption('--no-prompt-wait', default=False, action='store_true',
> help="Assume that U-Boot is ready and don't wait for a prompt")
>
> @@ -130,12 +132,33 @@ def get_details(config):
> str: Build directory
> str: Source directory
> """
> - board_type = config.getoption('board_type')
> - board_identity = config.getoption('board_identity')
> + role = config.getoption('role')
> build_dir = config.getoption('build_dir')
> + if role:
> + board_identity = role
> + cmd = ['u-boot-test-getrole', role, '--configure']
> + env = os.environ.copy()
> + if build_dir:
> + env['U_BOOT_BUILD_DIR'] = build_dir
> + proc = subprocess.run(cmd, capture_output=True, encoding='utf-8',
> + env=env)
> + if proc.returncode:
> + raise ValueError(proc.stderr)
> + print('conftest: lab:', proc.stdout)
> + vals = {}
> + for line in proc.stdout.splitlines():
> + item, value = line.split(' ', maxsplit=1)
> + k = item.split(':')[-1]
> + vals[k] = value
> + print('conftest: lab info:', vals)
> + board_type, default_build_dir, source_dir = (vals['board'],
> + vals['build_dir'], vals['source_dir'])
> + else:
> + board_type = config.getoption('board_type')
> + board_identity = config.getoption('board_identity')
>
> - source_dir = os.path.dirname(os.path.dirname(TEST_PY_DIR))
> - default_build_dir = source_dir + '/build-' + board_type
> + source_dir = os.path.dirname(os.path.dirname(TEST_PY_DIR))
> + default_build_dir = source_dir + '/build-' + board_type
> if not build_dir:
> build_dir = default_build_dir
I'm a little confused here. Why can't we construct "role" from
board_type+board_identity and then we have the board
conf.${board_type}_${board_identity} file set whatever needs setting to
be "labgrid" ?
--
Tom
-------------- next part --------------
A non-text attachment was scrubbed...
Name: signature.asc
Type: application/pgp-signature
Size: 659 bytes
Desc: not available
URL: <https://lists.denx.de/pipermail/u-boot/attachments/20240624/5b4816ac/attachment.sig>
More information about the U-Boot
mailing list