[PATCH v5 17/20] test: Try to shut down the lab console gracefully

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


Hi Neil,

On Thu, 29 Aug 2024 at 08:26, <neil.armstrong at linaro.org> wrote:
>
> On 29/08/2024 00:08, Simon Glass wrote:
> > Send the Labgrid quit characters to ask it to exit gracefully. This
> > typically allows it to power off the board being used.
>
> Sending those characters every time could collide with other CI systems,
> I don't think it's a good idea.

What systems are you thinking about and what sort of collision would occur?

What do you suggest instead?

>
> >
> > If that doesn't work, try the less graceful approach.
> >
> > Signed-off-by: Simon Glass <sjg at chromium.org>
> > ---
> >
> > (no changes since v1)
> >
> >   test/py/u_boot_spawn.py | 17 +++++++++++++++--
> >   1 file changed, 15 insertions(+), 2 deletions(-)
> >
> > diff --git a/test/py/u_boot_spawn.py b/test/py/u_boot_spawn.py
> > index c0ff0813554..ec1fa465047 100644
> > --- a/test/py/u_boot_spawn.py
> > +++ b/test/py/u_boot_spawn.py
> > @@ -16,6 +16,9 @@ import termios
> >   import time
> >   import traceback
> >
> > +# Character to send (twice) to exit the terminal
> > +EXIT_CHAR = 0x1d    # FS (Ctrl + ])
> > +
> >   class Timeout(Exception):
> >       """An exception sub-class that indicates that a timeout occurred."""
> >
> > @@ -304,15 +307,25 @@ class Spawn:
> >               None.
> >
> >           Returns:
> > -            Nothing.
> > +            str: Type of closure completed
> >           """
> > +        self.send(chr(EXIT_CHAR) * 2)
> >
> > +        # Wait about 10 seconds for Labgrid to close and power off the board
> > +        for _ in range(100):
> > +            if not self.isalive():
> > +                return 'normal'
> > +            time.sleep(0.1)
> > +
> > +        # That didn't work, so try closing the PTY
> >           os.close(self.fd)
> >           for _ in range(100):
> >               if not self.isalive():
> > -                break
> > +                return 'break'
> >               time.sleep(0.1)
> >
> > +        return 'timeout'
> > +
> >       def get_expect_output(self):
> >           """Return the output read by expect()
> >
>

Regards,
Simon


More information about the U-Boot mailing list