[RFC PATCH] tests/avocado: apply a band aid to aspeed-evb login

Alex Bennée posted 1 patch 1 year, 8 months ago
Patches applied successfully (tree, apply log)
git fetch https://github.com/patchew-project/qemu tags/patchew/20220811114315.3065951-1-alex.bennee@linaro.org
Maintainers: Cleber Rosa <crosa@redhat.com>, "Philippe Mathieu-Daudé" <f4bug@amsat.org>, Wainer dos Santos Moschetta <wainersm@redhat.com>, Beraldo Leal <bleal@redhat.com>
tests/avocado/machine_aspeed.py | 2 ++
1 file changed, 2 insertions(+)
[RFC PATCH] tests/avocado: apply a band aid to aspeed-evb login
Posted by Alex Bennée 1 year, 8 months ago
This is really a limitation of the underlying console code which
doesn't allow us to detect the login: and following "#" prompts
because it reads input line wise. By adding a small delay we ensure
that the login prompt has appeared so we don't accidentally spaff the
shell commands to a confused getty in the guest.

Signed-off-by: Alex Bennée <alex.bennee@linaro.org>
Cc: Cédric Le Goater <clg@kaod.org>
Cc: John Snow <jsnow@redhat.com>
---
 tests/avocado/machine_aspeed.py | 2 ++
 1 file changed, 2 insertions(+)

diff --git a/tests/avocado/machine_aspeed.py b/tests/avocado/machine_aspeed.py
index c54da0fd8f..65d38f4efa 100644
--- a/tests/avocado/machine_aspeed.py
+++ b/tests/avocado/machine_aspeed.py
@@ -101,7 +101,9 @@ def do_test_arm_aspeed_buidroot_start(self, image, cpu_id):
         self.wait_for_console_pattern('Starting kernel ...')
         self.wait_for_console_pattern('Booting Linux on physical CPU ' + cpu_id)
         self.wait_for_console_pattern('lease of 10.0.2.15')
+        # the line before login:
         self.wait_for_console_pattern('Aspeed EVB')
+        time.sleep(0.1)
         exec_command(self, 'root')
         time.sleep(0.1)
 
-- 
2.30.2


Re: [RFC PATCH] tests/avocado: apply a band aid to aspeed-evb login
Posted by John Snow 1 year, 8 months ago
On Thu, Aug 11, 2022 at 7:43 AM Alex Bennée <alex.bennee@linaro.org> wrote:
>
> This is really a limitation of the underlying console code which
> doesn't allow us to detect the login: and following "#" prompts
> because it reads input line wise. By adding a small delay we ensure
> that the login prompt has appeared so we don't accidentally spaff the
> shell commands to a confused getty in the guest.
>
> Signed-off-by: Alex Bennée <alex.bennee@linaro.org>
> Cc: Cédric Le Goater <clg@kaod.org>
> Cc: John Snow <jsnow@redhat.com>
> ---
>  tests/avocado/machine_aspeed.py | 2 ++
>  1 file changed, 2 insertions(+)
>
> diff --git a/tests/avocado/machine_aspeed.py b/tests/avocado/machine_aspeed.py
> index c54da0fd8f..65d38f4efa 100644
> --- a/tests/avocado/machine_aspeed.py
> +++ b/tests/avocado/machine_aspeed.py
> @@ -101,7 +101,9 @@ def do_test_arm_aspeed_buidroot_start(self, image, cpu_id):
>          self.wait_for_console_pattern('Starting kernel ...')
>          self.wait_for_console_pattern('Booting Linux on physical CPU ' + cpu_id)
>          self.wait_for_console_pattern('lease of 10.0.2.15')
> +        # the line before login:
>          self.wait_for_console_pattern('Aspeed EVB')
> +        time.sleep(0.1)
>          exec_command(self, 'root')
>          time.sleep(0.1)
>
> --
> 2.30.2
>

Augh. Sorry my hunch was wrong. I wasn't aware of this problem.

Is ... this 0.1 second sleep really sufficient? I guess it's better
than not having it, and I can't reasonably ask for something more
thorough.

Acked-by: John Snow <jsnow@redhat.com>
Re: [RFC PATCH] tests/avocado: apply a band aid to aspeed-evb login
Posted by Alex Bennée 1 year, 8 months ago
John Snow <jsnow@redhat.com> writes:

> On Thu, Aug 11, 2022 at 7:43 AM Alex Bennée <alex.bennee@linaro.org> wrote:
>>
>> This is really a limitation of the underlying console code which
>> doesn't allow us to detect the login: and following "#" prompts
>> because it reads input line wise. By adding a small delay we ensure
>> that the login prompt has appeared so we don't accidentally spaff the
>> shell commands to a confused getty in the guest.
>>
>> Signed-off-by: Alex Bennée <alex.bennee@linaro.org>
>> Cc: Cédric Le Goater <clg@kaod.org>
>> Cc: John Snow <jsnow@redhat.com>
>> ---
>>  tests/avocado/machine_aspeed.py | 2 ++
>>  1 file changed, 2 insertions(+)
>>
>> diff --git a/tests/avocado/machine_aspeed.py b/tests/avocado/machine_aspeed.py
>> index c54da0fd8f..65d38f4efa 100644
>> --- a/tests/avocado/machine_aspeed.py
>> +++ b/tests/avocado/machine_aspeed.py
>> @@ -101,7 +101,9 @@ def do_test_arm_aspeed_buidroot_start(self, image, cpu_id):
>>          self.wait_for_console_pattern('Starting kernel ...')
>>          self.wait_for_console_pattern('Booting Linux on physical CPU ' + cpu_id)
>>          self.wait_for_console_pattern('lease of 10.0.2.15')
>> +        # the line before login:
>>          self.wait_for_console_pattern('Aspeed EVB')
>> +        time.sleep(0.1)
>>          exec_command(self, 'root')
>>          time.sleep(0.1)
>>
>> --
>> 2.30.2
>>
>
> Augh. Sorry my hunch was wrong. I wasn't aware of this problem.
>
> Is ... this 0.1 second sleep really sufficient? I guess it's better
> than not having it, and I can't reasonably ask for something more
> thorough.

We could still do with fixing _console_interaction() so we can handle
waiting for prompts without newlines in them. I had a go but it just got
messy.

>
> Acked-by: John Snow <jsnow@redhat.com>


-- 
Alex Bennée
Re: [RFC PATCH] tests/avocado: apply a band aid to aspeed-evb login
Posted by Cédric Le Goater 1 year, 8 months ago
On 8/11/22 16:08, John Snow wrote:
> On Thu, Aug 11, 2022 at 7:43 AM Alex Bennée <alex.bennee@linaro.org> wrote:
>>
>> This is really a limitation of the underlying console code which
>> doesn't allow us to detect the login: and following "#" prompts
>> because it reads input line wise. By adding a small delay we ensure
>> that the login prompt has appeared so we don't accidentally spaff the
>> shell commands to a confused getty in the guest.
>>
>> Signed-off-by: Alex Bennée <alex.bennee@linaro.org>
>> Cc: Cédric Le Goater <clg@kaod.org>
>> Cc: John Snow <jsnow@redhat.com>
>> ---
>>   tests/avocado/machine_aspeed.py | 2 ++
>>   1 file changed, 2 insertions(+)
>>
>> diff --git a/tests/avocado/machine_aspeed.py b/tests/avocado/machine_aspeed.py
>> index c54da0fd8f..65d38f4efa 100644
>> --- a/tests/avocado/machine_aspeed.py
>> +++ b/tests/avocado/machine_aspeed.py
>> @@ -101,7 +101,9 @@ def do_test_arm_aspeed_buidroot_start(self, image, cpu_id):
>>           self.wait_for_console_pattern('Starting kernel ...')
>>           self.wait_for_console_pattern('Booting Linux on physical CPU ' + cpu_id)
>>           self.wait_for_console_pattern('lease of 10.0.2.15')
>> +        # the line before login:
>>           self.wait_for_console_pattern('Aspeed EVB')
>> +        time.sleep(0.1)
>>           exec_command(self, 'root')
>>           time.sleep(0.1)
>>
>> --
>> 2.30.2
>>
> 
> Augh. Sorry my hunch was wrong. I wasn't aware of this problem.
> 
> Is ... this 0.1 second sleep really sufficient? I guess it's better
> than not having it, and I can't reasonably ask for something more
> thorough.

tests/avocado/machine_aarch64_virt.py has a few of these for the same
reason I guess.

C.

Re: [RFC PATCH] tests/avocado: apply a band aid to aspeed-evb login
Posted by Cédric Le Goater 1 year, 8 months ago
On 8/11/22 13:43, Alex Bennée wrote:
> This is really a limitation of the underlying console code which
> doesn't allow us to detect the login: and following "#" prompts
> because it reads input line wise. By adding a small delay we ensure
> that the login prompt has appeared so we don't accidentally spaff the
> shell commands to a confused getty in the guest.
> 
> Signed-off-by: Alex Bennée <alex.bennee@linaro.org>
> Cc: Cédric Le Goater <clg@kaod.org>
> Cc: John Snow <jsnow@redhat.com>


May be you should also add the missing timeout setting ?

Anyhow,

Reviewed-by: Cédric Le Goater <clg@kaod.org>

Thanks,

C.

> ---
>   tests/avocado/machine_aspeed.py | 2 ++
>   1 file changed, 2 insertions(+)
> 
> diff --git a/tests/avocado/machine_aspeed.py b/tests/avocado/machine_aspeed.py
> index c54da0fd8f..65d38f4efa 100644
> --- a/tests/avocado/machine_aspeed.py
> +++ b/tests/avocado/machine_aspeed.py
> @@ -101,7 +101,9 @@ def do_test_arm_aspeed_buidroot_start(self, image, cpu_id):
>           self.wait_for_console_pattern('Starting kernel ...')
>           self.wait_for_console_pattern('Booting Linux on physical CPU ' + cpu_id)
>           self.wait_for_console_pattern('lease of 10.0.2.15')
> +        # the line before login:
>           self.wait_for_console_pattern('Aspeed EVB')
> +        time.sleep(0.1)
>           exec_command(self, 'root')
>           time.sleep(0.1)
>   


Re: [RFC PATCH] tests/avocado: apply a band aid to aspeed-evb login
Posted by Alex Bennée 1 year, 8 months ago
Cédric Le Goater <clg@kaod.org> writes:

> On 8/11/22 13:43, Alex Bennée wrote:
>> This is really a limitation of the underlying console code which
>> doesn't allow us to detect the login: and following "#" prompts
>> because it reads input line wise. By adding a small delay we ensure
>> that the login prompt has appeared so we don't accidentally spaff the
>> shell commands to a confused getty in the guest.
>> Signed-off-by: Alex Bennée <alex.bennee@linaro.org>
>> Cc: Cédric Le Goater <clg@kaod.org>
>> Cc: John Snow <jsnow@redhat.com>
>
>
> May be you should also add the missing timeout setting ?

That's in another patch - I'll post the whole series now.
>
> Anyhow,
>
> Reviewed-by: Cédric Le Goater <clg@kaod.org>
>
> Thanks,
>
> C.
>
>> ---
>>   tests/avocado/machine_aspeed.py | 2 ++
>>   1 file changed, 2 insertions(+)
>> diff --git a/tests/avocado/machine_aspeed.py
>> b/tests/avocado/machine_aspeed.py
>> index c54da0fd8f..65d38f4efa 100644
>> --- a/tests/avocado/machine_aspeed.py
>> +++ b/tests/avocado/machine_aspeed.py
>> @@ -101,7 +101,9 @@ def do_test_arm_aspeed_buidroot_start(self, image, cpu_id):
>>           self.wait_for_console_pattern('Starting kernel ...')
>>           self.wait_for_console_pattern('Booting Linux on physical CPU ' + cpu_id)
>>           self.wait_for_console_pattern('lease of 10.0.2.15')
>> +        # the line before login:
>>           self.wait_for_console_pattern('Aspeed EVB')
>> +        time.sleep(0.1)
>>           exec_command(self, 'root')
>>           time.sleep(0.1)
>>   


-- 
Alex Bennée