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. (From OE-Core rev: 9de7fe11967576f4a8b24e653c6b9a02e5f6d85b) Signed-off-by: Stefan Stanacar <stefanx.stanacar@intel.com> Signed-off-by: Saul Wold <sgw@linux.intel.com> Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
This commit is contained in:
parent
ecb21fd7f8
commit
51588936d4
|
@ -81,6 +81,13 @@ class oeRuntimeTest(unittest.TestCase):
|
||||||
else:
|
else:
|
||||||
return False
|
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):
|
def getmodule(pos=2):
|
||||||
|
|
|
@ -32,6 +32,10 @@ class QemuRunner:
|
||||||
self.boottime = boottime
|
self.boottime = boottime
|
||||||
self.runqemutime = runqemutime
|
self.runqemutime = runqemutime
|
||||||
|
|
||||||
|
self.create_socket()
|
||||||
|
|
||||||
|
def create_socket(self):
|
||||||
|
|
||||||
self.bootlog = ''
|
self.bootlog = ''
|
||||||
self.qemusock = None
|
self.qemusock = None
|
||||||
|
|
||||||
|
@ -137,21 +141,31 @@ class QemuRunner:
|
||||||
return self.is_alive()
|
return self.is_alive()
|
||||||
|
|
||||||
def kill(self):
|
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:
|
if self.server_socket:
|
||||||
self.server_socket.close()
|
self.server_socket.close()
|
||||||
self.server_socket = None
|
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.qemupid = None
|
||||||
self.ip = None
|
self.ip = None
|
||||||
|
|
||||||
def restart(self, qemuparams = None):
|
def restart(self, qemuparams = None):
|
||||||
if self.is_alive():
|
bb.note("Restarting qemu process")
|
||||||
|
if self.runqemu.poll() is None:
|
||||||
self.kill()
|
self.kill()
|
||||||
bb.note("Qemu Restart required...")
|
self.create_socket()
|
||||||
return self.launch(qemuparams)
|
if self.launch(qemuparams):
|
||||||
|
return True
|
||||||
|
return False
|
||||||
|
|
||||||
def is_alive(self):
|
def is_alive(self):
|
||||||
qemu_child = self.find_child(str(self.runqemu.pid))
|
qemu_child = self.find_child(str(self.runqemu.pid))
|
||||||
|
|
Loading…
Reference in New Issue