summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMariano Lopez <mariano.lopez@linux.intel.com>2015-09-02 13:44:42 +0000
committerRichard Purdie <richard.purdie@linuxfoundation.org>2015-09-02 23:47:21 +0100
commit4770a766389b94ddd5639d7a92e196abac38da22 (patch)
tree01db69a1a1db5307c0c93a5b60960db8a1d8b779
parentf8c7542164ebbe29613532c93ddc34c94238453c (diff)
downloadopenembedded-core-4770a766389b94ddd5639d7a92e196abac38da22.tar.gz
openembedded-core-4770a766389b94ddd5639d7a92e196abac38da22.tar.bz2
openembedded-core-4770a766389b94ddd5639d7a92e196abac38da22.zip
qemurunner: Handle lack of data on run serial gracefully
This changes the behavior when data was not received over the serial console when a command is run. With this the socket is no longer closed but it throws and exception that can handled in upper layers. With this the test can continue without throwing errors for not having the socket anymore. [YOCTO #8118] Signed-off-by: Mariano Lopez <mariano.lopez@linux.intel.com> Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
-rw-r--r--meta/lib/oeqa/utils/dump.py12
-rw-r--r--meta/lib/oeqa/utils/qemurunner.py21
2 files changed, 22 insertions, 11 deletions
diff --git a/meta/lib/oeqa/utils/dump.py b/meta/lib/oeqa/utils/dump.py
index 6067438e35..4ae871c657 100644
--- a/meta/lib/oeqa/utils/dump.py
+++ b/meta/lib/oeqa/utils/dump.py
@@ -12,6 +12,7 @@ def get_host_dumper(d):
class BaseDumper(object):
+ """ Base class to dump commands from host/target """
def __init__(self, cmds, parent_dir):
self.cmds = []
@@ -53,6 +54,7 @@ class BaseDumper(object):
class HostDumper(BaseDumper):
+ """ Class to get dumps from the host running the tests """
def __init__(self, cmds, parent_dir):
super(HostDumper, self).__init__(cmds, parent_dir)
@@ -66,6 +68,7 @@ class HostDumper(BaseDumper):
class TargetDumper(BaseDumper):
+ """ Class to get dumps from target, it only works with QemuRunner """
def __init__(self, cmds, parent_dir, qemurunner):
super(TargetDumper, self).__init__(cmds, parent_dir)
@@ -75,5 +78,10 @@ class TargetDumper(BaseDumper):
if dump_dir:
self.dump_dir = dump_dir
for cmd in self.cmds:
- (status, output) = self.runner.run_serial(cmd)
- self._write_dump(cmd.split()[0], output)
+ # We can continue with the testing if serial commands fail
+ try:
+ (status, output) = self.runner.run_serial(cmd)
+ self._write_dump(cmd.split()[0], output)
+ except:
+ print("Tried to dump info from target but "
+ "serial console failed")
diff --git a/meta/lib/oeqa/utils/qemurunner.py b/meta/lib/oeqa/utils/qemurunner.py
index 4ce5d9c685..3ad747a503 100644
--- a/meta/lib/oeqa/utils/qemurunner.py
+++ b/meta/lib/oeqa/utils/qemurunner.py
@@ -197,13 +197,17 @@ class QemuRunner:
self.stop()
return False
- (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")
- else:
- logger.info("Couldn't login into serial console"
- " as root using blank password")
+ # If we are not able to login the tests can continue
+ try:
+ (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")
+ else:
+ logger.info("Couldn't login into serial console"
+ " as root using blank password")
+ except:
+ logger.info("Serial console failed while trying to login")
else:
logger.info("Qemu pid didn't appeared in %s seconds" % self.runqemutime)
@@ -321,8 +325,7 @@ class QemuRunner:
stopread = True
break
else:
- sock.close()
- stopread = True
+ raise Exception("No data on serial console socket")
if data:
if raw:
status = 1