aboutsummaryrefslogtreecommitdiffstats
path: root/meta/lib/oeqa
diff options
context:
space:
mode:
authorStefan Stanacar <stefanx.stanacar@intel.com>2013-08-22 14:47:21 +0300
committerRichard Purdie <richard.purdie@linuxfoundation.org>2013-08-26 11:42:15 +0100
commit9de7fe11967576f4a8b24e653c6b9a02e5f6d85b (patch)
treecffdb2fc6a510be1501a4b854c0fd41f52af4a21 /meta/lib/oeqa
parentf6186b4204dcc421b4e616774315c8a2a77fb5c5 (diff)
downloadopenembedded-core-9de7fe11967576f4a8b24e653c6b9a02e5f6d85b.tar.gz
lib/oeqa: make it possible to restart the target
Tweak QemuRunner so we can actually restart the qemu target in a test (if we want more memory for example). Also add a restart method to the base test class so that tests can use it. Signed-off-by: Stefan Stanacar <stefanx.stanacar@intel.com> Signed-off-by: Saul Wold <sgw@linux.intel.com>
Diffstat (limited to 'meta/lib/oeqa')
-rw-r--r--meta/lib/oeqa/oetest.py7
-rw-r--r--meta/lib/oeqa/utils/qemurunner.py28
2 files changed, 28 insertions, 7 deletions
diff --git a/meta/lib/oeqa/oetest.py b/meta/lib/oeqa/oetest.py
index 7f6baa4038..4a406e75ca 100644
--- a/meta/lib/oeqa/oetest.py
+++ b/meta/lib/oeqa/oetest.py
@@ -81,6 +81,13 @@ class oeRuntimeTest(unittest.TestCase):
else:
return False
+ @classmethod
+ def restartTarget(self,params=None):
+
+ if oeRuntimeTest.tc.qemu.restart(params):
+ oeRuntimeTest.tc.target.host = oeRuntimeTest.tc.qemu.ip
+ else:
+ raise Exception("Restarting target failed")
def getmodule(pos=2):
diff --git a/meta/lib/oeqa/utils/qemurunner.py b/meta/lib/oeqa/utils/qemurunner.py
index 9ae618f4c9..6ee5b8577e 100644
--- a/meta/lib/oeqa/utils/qemurunner.py
+++ b/meta/lib/oeqa/utils/qemurunner.py
@@ -32,6 +32,10 @@ class QemuRunner:
self.boottime = boottime
self.runqemutime = runqemutime
+ self.create_socket()
+
+ def create_socket(self):
+
self.bootlog = ''
self.qemusock = None
@@ -137,21 +141,31 @@ class QemuRunner:
return self.is_alive()
def kill(self):
+
+ if self.runqemu:
+ bb.note("Sending SIGTERM to runqemu")
+ os.kill(-self.runqemu.pid,signal.SIGTERM)
+ endtime = time.time() + self.runqemutime
+ while self.runqemu.poll() is None and time.time() < endtime:
+ time.sleep(1)
+ if self.runqemu.poll() is None:
+ bb.note("Sending SIGKILL to runqemu")
+ os.kill(-self.runqemu.pid,signal.SIGKILL)
+ self.runqemu = None
if self.server_socket:
self.server_socket.close()
self.server_socket = None
- if self.runqemu.pid:
- os.kill(-self.runqemu.pid,signal.SIGTERM)
- os.kill(-self.runqemu.pid,signal.SIGKILL)
- self.runqemu.pid = None
self.qemupid = None
self.ip = None
def restart(self, qemuparams = None):
- if self.is_alive():
+ bb.note("Restarting qemu process")
+ if self.runqemu.poll() is None:
self.kill()
- bb.note("Qemu Restart required...")
- return self.launch(qemuparams)
+ self.create_socket()
+ if self.launch(qemuparams):
+ return True
+ return False
def is_alive(self):
qemu_child = self.find_child(str(self.runqemu.pid))