[1/2] arm/oeqa/fvp: fix scoping issues with the bootlog

Message ID 20220121164159.3780055-1-ross.burton@arm.com
State New
Headers show
Series [1/2] arm/oeqa/fvp: fix scoping issues with the bootlog | expand

Commit Message

Ross Burton Jan. 21, 2022, 4:41 p.m. UTC
If wait_for_login() times out then it raises an exception instead of
passing back return values, so the bootlog is never assigned.

We always want a boot log, so initialise it outside of wait_for_login and
pass it in.

Signed-off-by: Ross Burton <ross.burton@arm.com>
---
 meta-arm/lib/oeqa/controllers/fvp.py | 11 +++++------
 1 file changed, 5 insertions(+), 6 deletions(-)

Comments

Jon Mason Jan. 22, 2022, 1:25 a.m. UTC | #1
On Fri, 21 Jan 2022 16:41:58 +0000, Ross Burton wrote:
> If wait_for_login() times out then it raises an exception instead of
> passing back return values, so the bootlog is never assigned.
> 
> We always want a boot log, so initialise it outside of wait_for_login and
> pass it in.

Applied, thanks!

[1/2] arm/oeqa/fvp: fix scoping issues with the bootlog
      commit: edf050394ecff2dccfafdc0bc2674311e2e7e0ef
[2/2] runfvp: fix undefined variable in terminal selection login
      commit: 254482284d4588532bd7b9d980193e3e41adaa99

Best regards,

Patch

diff --git a/meta-arm/lib/oeqa/controllers/fvp.py b/meta-arm/lib/oeqa/controllers/fvp.py
index 87e1b941..29ccae5f 100644
--- a/meta-arm/lib/oeqa/controllers/fvp.py
+++ b/meta-arm/lib/oeqa/controllers/fvp.py
@@ -39,13 +39,12 @@  class OEFVPTarget(oeqa.core.target.ssh.OESSHTarget):
         self.fvp = await asyncio.create_subprocess_exec(*cmd, stdout=subprocess.PIPE, stderr=subprocess.STDOUT, stdin=subprocess.PIPE)
         self.logger.debug(f"Started runfvp PID {self.fvp.pid}")
 
-        async def wait_for_login():
-            bootlog = bytearray()
+        async def wait_for_login(bootlog):
             while True:
                 line = await self.fvp.stdout.read(1024)
                 if not line:
                     self.logger.debug("runfvp terminated")
-                    return False, bootlog
+                    return False
 
                 self.logger.debug(f"Read line [{line}]")
 
@@ -55,11 +54,11 @@  class OEFVPTarget(oeqa.core.target.ssh.OESSHTarget):
 
                 if b" login:" in bootlog:
                     self.logger.debug("Found login prompt")
-                    return True, bootlog
-            return False, bootlog
+                    return True
 
+        bootlog = bytearray()
         try:
-            found, bootlog = await asyncio.wait_for(wait_for_login(), self.boot_timeout)
+            found = await asyncio.wait_for(wait_for_login(bootlog), self.boot_timeout)
             if found:
                 return
         except asyncio.TimeoutError: