aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorMariano Lopez <mariano.lopez@linux.intel.com>2015-08-12 07:02:21 +0000
committerRichard Purdie <richard.purdie@linuxfoundation.org>2015-08-16 09:24:20 +0100
commitb8ead7c0929c4096e50b481a608f5d0c09eab29d (patch)
tree735ba4413f02bbef1c7a8441af72aec8dd42c453
parentcc2b1c28801399c6b525248fa0dabf7c42afc714 (diff)
downloadopenembedded-core-contrib-b8ead7c0929c4096e50b481a608f5d0c09eab29d.tar.gz
qemurunner.py: Added raw mode in run_serial
Raw mode allows to send the command without sending 'echo $?' for validation; Also this doesn't remove the command or the prompt from the output returned. In raw mode validation is done if there is output. This raw mode would be useful for validate the prompt when a user logs in. [YOCTO #8118] Signed-off-by: Mariano Lopez <mariano.lopez@linux.intel.com> Signed-off-by: Ross Burton <ross.burton@intel.com>
-rw-r--r--meta/lib/oeqa/utils/qemurunner.py31
1 files changed, 18 insertions, 13 deletions
diff --git a/meta/lib/oeqa/utils/qemurunner.py b/meta/lib/oeqa/utils/qemurunner.py
index fc2e244a7f..3e604d8155 100644
--- a/meta/lib/oeqa/utils/qemurunner.py
+++ b/meta/lib/oeqa/utils/qemurunner.py
@@ -177,7 +177,7 @@ class QemuRunner:
self.stop()
return False
- (status, output) = self.run_serial("root\n")
+ (status, output) = self.run_serial("root\n", raw=True)
if re.search("root@[a-zA-Z0-9\-]+:~#", output):
self.logged = True
logger.info("Logged as root in serial console")
@@ -274,9 +274,11 @@ class QemuRunner:
if "qemu-system" in basecmd and "-serial tcp" in commands[p]:
return [int(p),commands[p]]
- def run_serial(self, command):
+ def run_serial(self, command, raw=False):
# We assume target system have echo to get command status
- self.server_socket.sendall("%s; echo $?\n" % command)
+ if not raw:
+ command = "%s; echo $?\n" % command
+ self.server_socket.sendall(command)
data = ''
status = 0
stopread = False
@@ -291,15 +293,18 @@ class QemuRunner:
sock.close()
stopread = True
if data:
- # Remove first line (command line) and last line (prompt)
- data = data[data.find('$?\r\n')+4:data.rfind('\r\n')]
- index = data.rfind('\r\n')
- if index == -1:
- status_cmd = data
- data = ""
- else:
- status_cmd = data[index+2:]
- data = data[:index]
- if (status_cmd == "0"):
+ if raw:
status = 1
+ else:
+ # Remove first line (command line) and last line (prompt)
+ data = data[data.find('$?\r\n')+4:data.rfind('\r\n')]
+ index = data.rfind('\r\n')
+ if index == -1:
+ status_cmd = data
+ data = ""
+ else:
+ status_cmd = data[index+2:]
+ data = data[:index]
+ if (status_cmd == "0"):
+ status = 1
return (status, str(data))