diff options
| -rw-r--r-- | meta/lib/oeqa/oetest.py | 7 | ||||
| -rw-r--r-- | meta/lib/oeqa/utils/qemurunner.py | 28 |
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): | |||
| 81 | else: | 81 | else: |
| 82 | return False | 82 | return False |
| 83 | 83 | ||
| 84 | @classmethod | ||
| 85 | def restartTarget(self,params=None): | ||
| 86 | |||
| 87 | if oeRuntimeTest.tc.qemu.restart(params): | ||
| 88 | oeRuntimeTest.tc.target.host = oeRuntimeTest.tc.qemu.ip | ||
| 89 | else: | ||
| 90 | raise Exception("Restarting target failed") | ||
| 84 | 91 | ||
| 85 | 92 | ||
| 86 | def getmodule(pos=2): | 93 | 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: | |||
| 32 | self.boottime = boottime | 32 | self.boottime = boottime |
| 33 | self.runqemutime = runqemutime | 33 | self.runqemutime = runqemutime |
| 34 | 34 | ||
| 35 | self.create_socket() | ||
| 36 | |||
| 37 | def create_socket(self): | ||
| 38 | |||
| 35 | self.bootlog = '' | 39 | self.bootlog = '' |
| 36 | self.qemusock = None | 40 | self.qemusock = None |
| 37 | 41 | ||
| @@ -137,21 +141,31 @@ class QemuRunner: | |||
| 137 | return self.is_alive() | 141 | return self.is_alive() |
| 138 | 142 | ||
| 139 | def kill(self): | 143 | def kill(self): |
| 144 | |||
| 145 | if self.runqemu: | ||
| 146 | bb.note("Sending SIGTERM to runqemu") | ||
| 147 | os.kill(-self.runqemu.pid,signal.SIGTERM) | ||
| 148 | endtime = time.time() + self.runqemutime | ||
| 149 | while self.runqemu.poll() is None and time.time() < endtime: | ||
| 150 | time.sleep(1) | ||
| 151 | if self.runqemu.poll() is None: | ||
| 152 | bb.note("Sending SIGKILL to runqemu") | ||
| 153 | os.kill(-self.runqemu.pid,signal.SIGKILL) | ||
| 154 | self.runqemu = None | ||
| 140 | if self.server_socket: | 155 | if self.server_socket: |
| 141 | self.server_socket.close() | 156 | self.server_socket.close() |
| 142 | self.server_socket = None | 157 | self.server_socket = None |
| 143 | if self.runqemu.pid: | ||
| 144 | os.kill(-self.runqemu.pid,signal.SIGTERM) | ||
| 145 | os.kill(-self.runqemu.pid,signal.SIGKILL) | ||
| 146 | self.runqemu.pid = None | ||
| 147 | self.qemupid = None | 158 | self.qemupid = None |
| 148 | self.ip = None | 159 | self.ip = None |
| 149 | 160 | ||
| 150 | def restart(self, qemuparams = None): | 161 | def restart(self, qemuparams = None): |
| 151 | if self.is_alive(): | 162 | bb.note("Restarting qemu process") |
| 163 | if self.runqemu.poll() is None: | ||
| 152 | self.kill() | 164 | self.kill() |
| 153 | bb.note("Qemu Restart required...") | 165 | self.create_socket() |
| 154 | return self.launch(qemuparams) | 166 | if self.launch(qemuparams): |
| 167 | return True | ||
| 168 | return False | ||
| 155 | 169 | ||
| 156 | def is_alive(self): | 170 | def is_alive(self): |
| 157 | qemu_child = self.find_child(str(self.runqemu.pid)) | 171 | qemu_child = self.find_child(str(self.runqemu.pid)) |
