]> code.ossystems Code Review - openembedded-core.git/commitdiff
qemurunner: Simplify binary data handling
authorRichard Purdie <richard.purdie@linuxfoundation.org>
Tue, 21 Nov 2017 11:42:54 +0000 (11:42 +0000)
committerRichard Purdie <richard.purdie@linuxfoundation.org>
Sat, 3 Mar 2018 08:32:14 +0000 (08:32 +0000)
I have concerns that bad timing of the flow of data from the logger
might corrupt the output due to the way binary strings are handled
in qemurunner.

This simplifies the code to do the same thing it did before but much
more safely.

(From OE-Core rev: 20bc247316ab915465a4b1add6d09b48e07202ac)

Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
(cherry picked from commit 1e87283e92a2765bb5d54d17138b208bc395953b)
Signed-off-by: Armin Kuster <akuster808@gmail.com>
Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
Signed-off-by: Armin Kuster <akuster808@gmail.com>
meta/lib/oeqa/utils/qemurunner.py

index 7ca9f1c736143bd71aee0468e544f80457c8b5df..360aa3fc3709f380c855f4abdd18a776da526014 100644 (file)
@@ -274,7 +274,7 @@ class QemuRunner:
         reachedlogin = False
         stopread = False
         qemusock = None
-        bootlog = ''
+        bootlog = b''
         data = b''
         while time.time() < endtime and not stopread:
             try:
@@ -291,17 +291,13 @@ class QemuRunner:
                 else:
                     data = data + sock.recv(1024)
                     if data:
-                        try:
-                            data = data.decode("utf-8", errors="surrogateescape")
-                            bootlog += data
-                            data = b''
-                            if re.search(".* login:", bootlog):
-                                self.server_socket = qemusock
-                                stopread = True
-                                reachedlogin = True
-                                self.logger.debug("Reached login banner")
-                        except UnicodeDecodeError:
-                            continue
+                        bootlog += data
+                        data = b''
+                        if b' login:' in bootlog:
+                            self.server_socket = qemusock
+                            stopread = True
+                            reachedlogin = True
+                            self.logger.debug("Reached login banner")
                     else:
                         socklist.remove(sock)
                         sock.close()