[PATCH 25/42] test: Allow connecting to a running board

Andrejs Cainikovs andrejs.cainikovs at toradex.com
Tue Jun 25 01:56:35 CEST 2024


On Tue, Jun 11, 2024 at 02:01:39PM -0600, Simon Glass wrote:
> Sometimes we know that the board is already running the right software,
> so provide an option to allow running of tests directly, without first
> resetting the board.
> 
> This saves time when re-running a test where only the Python code is
> changing.
> 
> Signed-off-by: Simon Glass <sjg at chromium.org>
> ---
> 
>  test/py/conftest.py                   |  3 +++
>  test/py/u_boot_console_base.py        | 14 ++++++++++----
>  test/py/u_boot_console_exec_attach.py | 21 ++++++++++++---------
>  3 files changed, 25 insertions(+), 13 deletions(-)
> 
> diff --git a/test/py/conftest.py b/test/py/conftest.py
> index fc9dd3a83f8..ca66b9d9e61 100644
> --- a/test/py/conftest.py
> +++ b/test/py/conftest.py
> @@ -79,6 +79,8 @@ 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('--no-prompt-wait', default=False, action='store_true',
> +        help="Assume that U-Boot is ready and don't wait for a prompt")
>  
>  def run_build(config, source_dir, build_dir, board_type, log):
>      """run_build: Build U-Boot
> @@ -238,6 +240,7 @@ def pytest_configure(config):
>      ubconfig.board_type = board_type
>      ubconfig.board_identity = board_identity
>      ubconfig.gdbserver = gdbserver
> +    ubconfig.no_prompt_wait = config.getoption('no_prompt_wait')
>      ubconfig.dtb = build_dir + '/arch/sandbox/dts/test.dtb'
>  
>      env_vars = (
> diff --git a/test/py/u_boot_console_base.py b/test/py/u_boot_console_base.py
> index e4f86f6af5b..a61eec31148 100644
> --- a/test/py/u_boot_console_base.py
> +++ b/test/py/u_boot_console_base.py
> @@ -413,11 +413,17 @@ class ConsoleBase(object):
>              if not self.config.gdbserver:
>                  self.p.timeout = TIMEOUT_MS
>              self.p.logfile_read = self.logstream
> -            if expect_reset:
> -                loop_num = 2
> +            if self.config.no_prompt_wait:
> +                # Send an empty command to set up the 'expect' logic. This has
> +                # the side effect of ensuring that there was no partial command
> +                # line entered
> +                self.run_command(' ')
>              else:
> -                loop_num = 1
> -            self.wait_for_boot_prompt(loop_num = loop_num)
> +                if expect_reset:
> +                    loop_num = 2
> +                else:
> +                    loop_num = 1
> +                self.wait_for_boot_prompt(loop_num = loop_num)

Hi Simon,

I had a very bad day, so here you go:

== ?

/Andrejs

>              self.at_prompt = True
>              self.at_prompt_logevt = self.logstream.logfile.cur_evt
>          except Exception as ex:
> diff --git a/test/py/u_boot_console_exec_attach.py b/test/py/u_boot_console_exec_attach.py
> index 5f4916b7da2..42fc15197b9 100644
> --- a/test/py/u_boot_console_exec_attach.py
> +++ b/test/py/u_boot_console_exec_attach.py
> @@ -59,15 +59,18 @@ class ConsoleExecAttach(ConsoleBase):
>          args = [self.config.board_type, self.config.board_identity]
>          s = Spawn(['u-boot-test-console'] + args)
>  
> -        try:
> -            self.log.action('Resetting board')
> -            cmd = ['u-boot-test-reset'] + args
> -            runner = self.log.get_runner(cmd[0], sys.stdout)
> -            runner.run(cmd)
> -            runner.close()
> -        except:
> -            s.close()
> -            raise
> +        if self.config.no_prompt_wait:
> +            self.log.action('Connecting to board without reset')
> +        else:
> +            try:
> +                self.log.action('Resetting board')
> +                cmd = ['u-boot-test-reset'] + args
> +                runner = self.log.get_runner(cmd[0], sys.stdout)
> +                runner.run(cmd)
> +                runner.close()
> +            except:
> +                s.close()
> +                raise
>  
>          return s
>  
> -- 
> 2.34.1
> 



More information about the U-Boot mailing list