[U-Boot] [PATCH] test/py: make crash detection more robust

Simon Glass sjg at chromium.org
Tue Jan 26 02:07:40 CET 2016


Hi Stephen,

On 25 January 2016 at 15:07, Stephen Warren <swarren at wwwdotorg.org> wrote:
> From: Stephen Warren <swarren at nvidia.com>
>
> test/py contains logic to detect the target crashing and rebooting by
> searching the console output for a U-Boot signon message, which will
> presumably be emitted when the system boots after the crash/reset.
>
> Currently, this logic only searches for the exact signon message that
> was printed by the U-Boot version under test, upon the assumption that
> binary is written into flash, and hence will be the version booted after
> any reset. However, this is not a valid assumption; some test setups
> download the U-Boot-under-test into RAM and boot it from there, and in
> such a scenario an arbitrary U-Boot version may be located in flash and
> hence run after any reset.
>
> Fix the reset detection logic to match any U-Boot signon message. This
> prevents false negatives.
>
> Signed-off-by: Stephen Warren <swarren at nvidia.com>
> ---
>  test/py/u_boot_console_base.py | 20 +++++++-------------
>  1 file changed, 7 insertions(+), 13 deletions(-)
>
> diff --git a/test/py/u_boot_console_base.py b/test/py/u_boot_console_base.py
> index 51163bc0db68..bb834b0d34ab 100644
> --- a/test/py/u_boot_console_base.py
> +++ b/test/py/u_boot_console_base.py
> @@ -150,12 +150,11 @@ class ConsoleBase(object):
>
>          bad_patterns = []
>          bad_pattern_ids = []
> -        if (self.disable_check_count['spl_signon'] == 0 and
> -                self.u_boot_spl_signon):
> -            bad_patterns.append(self.u_boot_spl_signon_escaped)
> +        if (self.disable_check_count['spl_signon'] == 0):
> +            bad_patterns.append(pattern_u_boot_spl_signon)
>              bad_pattern_ids.append('SPL signon')
>          if self.disable_check_count['main_signon'] == 0:
> -            bad_patterns.append(self.u_boot_main_signon_escaped)
> +            bad_patterns.append(pattern_u_boot_main_signon)
>              bad_pattern_ids.append('U-Boot main signon')
>          if self.disable_check_count['unknown_command'] == 0:
>              bad_patterns.append(pattern_unknown_command)
> @@ -299,18 +298,13 @@ class ConsoleBase(object):
>              self.p.logfile_read = self.logstream
>              if self.config.buildconfig.get('CONFIG_SPL', False) == 'y':
>                  self.p.expect([pattern_u_boot_spl_signon])
> -                self.u_boot_spl_signon = self.p.after
> -                self.u_boot_spl_signon_escaped = re.escape(self.p.after)
> -            else:
> -                self.u_boot_spl_signon = None
>              self.p.expect([pattern_u_boot_main_signon])
> -            self.u_boot_main_signon = self.p.after
> -            self.u_boot_main_signon_escaped = re.escape(self.p.after)
> -            build_idx = self.u_boot_main_signon.find(', Build:')
> +            signon = self.p.after
> +            build_idx = signon.find(', Build:')
>              if build_idx == -1:
> -                self.u_boot_version_string = self.u_boot_main_signon
> +                self.u_boot_version_string = signon
>              else:
> -                self.u_boot_version_string = self.u_boot_main_signon[:build_idx]
> +                self.u_boot_version_string = signon[:build_idx]
>              while True:
>                  match = self.p.expect([self.prompt_escaped,
>                                         pattern_stop_autoboot_prompt])
> --
> 2.7.0
>

Can you add comments as to what exactly you are looking for? Just 'Build: '?

Regards,
Simon


More information about the U-Boot mailing list