test/py: Add an option to disable the console timeout
When debugging, particularly when stepping through code in a debugger or dealing with very slow operations, the console timeout can interfere. Add a --no-timeout command-line option that disables the console timeout. Adjust get_default_timeout() to checks for both --gdbserver and --no-timeout, returning None to disable timeouts in either case. This consolidates the timeout-disable logic that was previously spread across multiple locations. Series-to: concept Series-cc: heinrich Cover-letter: Malloc debugging and test/py improvements This series adds malloc-debugging features including a traffic log and file output for dumps, along with video optimisations and test/py performance improvements. The overall goal is to speed up pytests and make it easier to debug memory leaks. Changes include: - Sandbox gprof profiling and mcheck runtime-disable support - Video truetype scratch buffer to reduce malloc pressure - Malloc traffic logging with 'malloc log' command - File output for malloc dump and log - test/py performance improvements reducing CPU usage by ~30% END Co-developed-by: Claude <noreply@anthropic.com> Signed-off-by: Simon Glass <simon.glass@canonical.com> Series-links: 1:100 Series-version: 2
This commit is contained in:
@@ -271,6 +271,19 @@ class ConsoleBase():
|
||||
# call, where the function returns None (assignment-from-none)
|
||||
return spawn.Spawn([])
|
||||
|
||||
def get_default_timeout(self):
|
||||
"""Get the default timeout for commands.
|
||||
|
||||
Subclasses can override this to provide a different timeout.
|
||||
For example, sandbox may need a longer timeout when mcheck is enabled.
|
||||
|
||||
Returns:
|
||||
int: Timeout in milliseconds, or None if timeout is disabled
|
||||
"""
|
||||
if self.config.gdbserver or self.config.no_timeout:
|
||||
return None
|
||||
return TIMEOUT_MS
|
||||
|
||||
def eval_patterns(self):
|
||||
"""Set up lists of regexes for patterns we don't expect on console"""
|
||||
self.bad_patterns = [pat.pattern for pat in self.avail_patterns
|
||||
@@ -328,7 +341,7 @@ class ConsoleBase():
|
||||
m = pattern_ready_prompt.search(self.after)
|
||||
self.u_boot_version_string = m.group(2)
|
||||
self.log.info('Lab: Board is ready')
|
||||
self.timeout = TIMEOUT_MS
|
||||
self.timeout = self.get_default_timeout()
|
||||
break
|
||||
if m == 2:
|
||||
self.log.info(f'Found autoboot prompt {m}')
|
||||
@@ -616,8 +629,7 @@ class ConsoleBase():
|
||||
if self.p:
|
||||
# Reset the console timeout value as some tests may change
|
||||
# its default value during the execution
|
||||
if not self.config.gdbserver:
|
||||
self.timeout = TIMEOUT_MS
|
||||
self.timeout = self.get_default_timeout()
|
||||
return
|
||||
try:
|
||||
self.log.start_section('Starting U-Boot')
|
||||
@@ -628,8 +640,7 @@ class ConsoleBase():
|
||||
# text if LCD is enabled. This value may need tweaking in the
|
||||
# future, possibly per-test to be optimal. This works for 'help'
|
||||
# on board 'seaboard'.
|
||||
if not self.config.gdbserver:
|
||||
self.timeout = TIMEOUT_MS
|
||||
self.timeout = self.get_default_timeout()
|
||||
self.logfile_read = self.logstream
|
||||
if self.config.use_running_system:
|
||||
# Send an empty command to set up the 'expect' logic. This has
|
||||
|
||||
Reference in New Issue
Block a user