[PATCH v5 01/20] test: Allow signaling that U-Boot is ready

Simon Glass sjg at chromium.org
Thu Aug 29 17:01:33 CEST 2024


Hi Neil,

On Thu, 29 Aug 2024 at 08:22, <neil.armstrong at linaro.org> wrote:
>
> On 29/08/2024 00:08, Simon Glass wrote:
> > When Labgrid is used, it can get U-Boot ready for running tests. It
> > prints a message when it has done so.
> >
> > Add logic to detect this message and accept it.
>
> So labgrid can boot and wait for `board_type & board_identity` itself right ?

Well, it just waits for the U-Boot banner. See Labgrid's UBootDriver[1].

>
> It's cool, but if the boots fails for a reason, what would happen ?

Several things:

1. It could timeout, meaning that it gives up waiting. In that case
any output the board did produce is shown
2. It could see invalid output, in which case it will likely complain
and fail (showing the output)

> Having the U-Boot pytest to parse the U-Boot boot log makes sure we can identify crash
> and report them in the pytest log.

It should work the same, or at least it does for me.

>
> And this adds a labgrid-only string to parse, which could potentially
> collide with pre-uboot or whatever log when not using labgrid.

It doesn't seem to. I made sure that {lab mode} is not checked
anywhere else in test.py

Regards,
SImon

>
> Neil
>
> >
> > Signed-off-by: Simon Glass <sjg at chromium.org>
> > ---
> >
> > (no changes since v1)
> >
> >   test/py/u_boot_console_base.py | 9 +++++----
> >   1 file changed, 5 insertions(+), 4 deletions(-)
> >
> > diff --git a/test/py/u_boot_console_base.py b/test/py/u_boot_console_base.py
> > index 76a550d45a1..882d04cd1e9 100644
> > --- a/test/py/u_boot_console_base.py
> > +++ b/test/py/u_boot_console_base.py
> > @@ -22,6 +22,7 @@ pattern_stop_autoboot_prompt = re.compile('Hit any key to stop autoboot: ')
> >   pattern_unknown_command = re.compile('Unknown command \'.*\' - try \'help\'')
> >   pattern_error_notification = re.compile('## Error: ')
> >   pattern_error_please_reset = re.compile('### ERROR ### Please RESET the board ###')
> > +pattern_ready_prompt = re.compile('U-Boot is ready')
> >
> >   PAT_ID = 0
> >   PAT_RE = 1
> > @@ -196,15 +197,15 @@ class ConsoleBase(object):
> >                                       self.bad_pattern_ids[m - 1])
> >               self.u_boot_version_string = self.p.after
> >               while True:
> > -                m = self.p.expect([self.prompt_compiled,
> > +                m = self.p.expect([self.prompt_compiled, pattern_ready_prompt,
> >                       pattern_stop_autoboot_prompt] + self.bad_patterns)
> > -                if m == 0:
> > +                if m == 0 or m == 1:
> >                       break
> > -                if m == 1:
> > +                if m == 2:
> >                       self.p.send(' ')
> >                       continue
> >                   raise Exception('Bad pattern found on console: ' +
> > -                                self.bad_pattern_ids[m - 2])
> > +                                self.bad_pattern_ids[m - 3])
> >
> >           except Exception as ex:
> >               self.log.error(str(ex))
>

[1] https://github.com/labgrid-project/labgrid/blob/master/labgrid/driver/ubootdriver.py#L142


More information about the U-Boot mailing list