diff mbox series

[U-Boot] test/py: ignore console read exceptions after test failure

Message ID 20180920192456.2349-1-swarren@wwwdotorg.org
State Superseded
Delegated to: Tom Rini
Headers show
Series [U-Boot] test/py: ignore console read exceptions after test failure | expand

Commit Message

Stephen Warren Sept. 20, 2018, 7:24 p.m. UTC
From: Stephen Warren <swarren@nvidia.com>

After a test has failed, test/py drains the U-Boot console log to ensure
that any relevant output is captured. At this point, we don't care about
detecting any additional errors, since the test is already known to have
failed, and U-Boot will be restarted. To ensure that the test cleanup code
is not interrupted, and can correctly terminate the log sections for the
failed test, ignore any exception that occurs while reading the U-Boot
console output during this limited period of time.

Signed-off-by: Stephen Warren <swarren@nvidia.com>
---
 test/py/u_boot_console_base.py | 11 +++++++++++
 1 file changed, 11 insertions(+)

Comments

Heinrich Schuchardt Sept. 20, 2018, 7:43 p.m. UTC | #1
On 09/20/2018 09:24 PM, Stephen Warren wrote:
> From: Stephen Warren <swarren@nvidia.com>
> 
> After a test has failed, test/py drains the U-Boot console log to ensure
> that any relevant output is captured. At this point, we don't care about
> detecting any additional errors, since the test is already known to have
> failed, and U-Boot will be restarted. To ensure that the test cleanup code
> is not interrupted, and can correctly terminate the log sections for the
> failed test, ignore any exception that occurs while reading the U-Boot
> console output during this limited period of time.
> 
> Signed-off-by: Stephen Warren <swarren@nvidia.com>
> ---
>  test/py/u_boot_console_base.py | 11 +++++++++++
>  1 file changed, 11 insertions(+)
> 
> diff --git a/test/py/u_boot_console_base.py b/test/py/u_boot_console_base.py
> index a14bad6e8c50..e337f3a84a96 100644
> --- a/test/py/u_boot_console_base.py
> +++ b/test/py/u_boot_console_base.py
> @@ -305,6 +305,17 @@ class ConsoleBase(object):
>              # cause the console output to be read and logged.
>              self.p.expect(['This should never match U-Boot output'])
>          except u_boot_spawn.Timeout:
> +	    # We expect a timeout, since U-Boot won't print what we waited
> +	    # for. Squash the expected timeout exception.
> +            pass

This block is redundant. You have a catch-all below with the same
processing of the exception. So I would rather drop it. The comment
could be integrated below.

Timeout exceptions are currently caught in
test/py/u_boot_console_base.py:307
Your patch could delete that 'except' as it becomes superfluous now.

Otherwise I am fine with this patch.

Best regards

Heinrich

> +        except:
> +	    # Squash any other exception too. This function is only used to
> +	    # drain (and log) the U-Boot console output after a failed test.
> +	    # The U-Boot process will be restarted, or target board reset, once
> +	    # this function returns. So, we don't care about detecting any
> +	    # additional errors, so they're squashed so that the rest of the
> +	    # post-test-failure cleanup code can continue operation, and
> +	    # correctly terminate any log sections, etc.
>              pass
>          finally:
>              self.p.timeout = orig_timeout
>
Stephen Warren Sept. 20, 2018, 10:52 p.m. UTC | #2
On 09/20/2018 01:43 PM, Heinrich Schuchardt wrote:
> On 09/20/2018 09:24 PM, Stephen Warren wrote:
>> From: Stephen Warren <swarren@nvidia.com>
>>
>> After a test has failed, test/py drains the U-Boot console log to ensure
>> that any relevant output is captured. At this point, we don't care about
>> detecting any additional errors, since the test is already known to have
>> failed, and U-Boot will be restarted. To ensure that the test cleanup code
>> is not interrupted, and can correctly terminate the log sections for the
>> failed test, ignore any exception that occurs while reading the U-Boot
>> console output during this limited period of time.
>>
>> Signed-off-by: Stephen Warren <swarren@nvidia.com>
>> ---
>>   test/py/u_boot_console_base.py | 11 +++++++++++
>>   1 file changed, 11 insertions(+)
>>
>> diff --git a/test/py/u_boot_console_base.py b/test/py/u_boot_console_base.py
>> index a14bad6e8c50..e337f3a84a96 100644
>> --- a/test/py/u_boot_console_base.py
>> +++ b/test/py/u_boot_console_base.py
>> @@ -305,6 +305,17 @@ class ConsoleBase(object):
>>               # cause the console output to be read and logged.
>>               self.p.expect(['This should never match U-Boot output'])
>>           except u_boot_spawn.Timeout:
>> +	    # We expect a timeout, since U-Boot won't print what we waited
>> +	    # for. Squash the expected timeout exception.
>> +            pass
> 
> This block is redundant. You have a catch-all below with the same
> processing of the exception. So I would rather drop it. The comment
> could be integrated below.
> 
> Timeout exceptions are currently caught in
> test/py/u_boot_console_base.py:307
> Your patch could delete that 'except' as it becomes superfluous now.

That was deliberate to emphasize the two cases. But since I realized 
that I need to re-post the patch to fix a TAB/space mixup, I guess I'll 
fix it up.
diff mbox series

Patch

diff --git a/test/py/u_boot_console_base.py b/test/py/u_boot_console_base.py
index a14bad6e8c50..e337f3a84a96 100644
--- a/test/py/u_boot_console_base.py
+++ b/test/py/u_boot_console_base.py
@@ -305,6 +305,17 @@  class ConsoleBase(object):
             # cause the console output to be read and logged.
             self.p.expect(['This should never match U-Boot output'])
         except u_boot_spawn.Timeout:
+	    # We expect a timeout, since U-Boot won't print what we waited
+	    # for. Squash the expected timeout exception.
+            pass
+        except:
+	    # Squash any other exception too. This function is only used to
+	    # drain (and log) the U-Boot console output after a failed test.
+	    # The U-Boot process will be restarted, or target board reset, once
+	    # this function returns. So, we don't care about detecting any
+	    # additional errors, so they're squashed so that the rest of the
+	    # post-test-failure cleanup code can continue operation, and
+	    # correctly terminate any log sections, etc.
             pass
         finally:
             self.p.timeout = orig_timeout