Hi Neil, On Thu, 29 Aug 2024 at 08:26, <[email protected]> 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 <[email protected]> > > --- > > > > (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

