summaryrefslogtreecommitdiffstats
path: root/meta/lib/oeqa
diff options
context:
space:
mode:
authorRichard Purdie <richard.purdie@linuxfoundation.org>2017-11-21 11:42:54 +0000
committerRichard Purdie <richard.purdie@linuxfoundation.org>2017-11-21 13:11:03 +0000
commita9d7f098f9cee38aa06967e31afea10006986fb6 (patch)
tree93f0b08ead98bd8987884b50b430938e12795099 /meta/lib/oeqa
parent0c2ba7146837af473b3f9f8bdbbb93af61db03e3 (diff)
downloadpoky-a9d7f098f9cee38aa06967e31afea10006986fb6.tar.gz
qemurunner: Simplify binary data handling
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: 1e87283e92a2765bb5d54d17138b208bc395953b) Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
Diffstat (limited to 'meta/lib/oeqa')
-rw-r--r--meta/lib/oeqa/utils/qemurunner.py20
1 files changed, 8 insertions, 12 deletions
diff --git a/meta/lib/oeqa/utils/qemurunner.py b/meta/lib/oeqa/utils/qemurunner.py
index 82335d8456..0631d43218 100644
--- a/meta/lib/oeqa/utils/qemurunner.py
+++ b/meta/lib/oeqa/utils/qemurunner.py
@@ -275,7 +275,7 @@ class QemuRunner:
275 reachedlogin = False 275 reachedlogin = False
276 stopread = False 276 stopread = False
277 qemusock = None 277 qemusock = None
278 bootlog = '' 278 bootlog = b''
279 data = b'' 279 data = b''
280 while time.time() < endtime and not stopread: 280 while time.time() < endtime and not stopread:
281 try: 281 try:
@@ -292,17 +292,13 @@ class QemuRunner:
292 else: 292 else:
293 data = data + sock.recv(1024) 293 data = data + sock.recv(1024)
294 if data: 294 if data:
295 try: 295 bootlog += data
296 data = data.decode("utf-8", errors="surrogateescape") 296 data = b''
297 bootlog += data 297 if b' login:' in bootlog:
298 data = b'' 298 self.server_socket = qemusock
299 if re.search(".* login:", bootlog): 299 stopread = True
300 self.server_socket = qemusock 300 reachedlogin = True
301 stopread = True 301 self.logger.debug("Reached login banner")
302 reachedlogin = True
303 self.logger.debug("Reached login banner")
304 except UnicodeDecodeError:
305 continue
306 else: 302 else:
307 socklist.remove(sock) 303 socklist.remove(sock)
308 sock.close() 304 sock.close()