diff options
| -rw-r--r-- | meta/lib/oeqa/utils/qemurunner.py | 36 |
1 files changed, 22 insertions, 14 deletions
diff --git a/meta/lib/oeqa/utils/qemurunner.py b/meta/lib/oeqa/utils/qemurunner.py index 59dc11d00f..7e5f588f60 100644 --- a/meta/lib/oeqa/utils/qemurunner.py +++ b/meta/lib/oeqa/utils/qemurunner.py | |||
| @@ -37,10 +37,12 @@ class QemuRunner: | |||
| 37 | self.runqemu = None | 37 | self.runqemu = None |
| 38 | # pid of the qemu process that runqemu will start | 38 | # pid of the qemu process that runqemu will start |
| 39 | self.qemupid = None | 39 | self.qemupid = None |
| 40 | # target ip - from the command line | 40 | # target ip - from the command line or runqemu output |
| 41 | self.ip = None | 41 | self.ip = None |
| 42 | # host ip - where qemu is running | 42 | # host ip - where qemu is running |
| 43 | self.server_ip = None | 43 | self.server_ip = None |
| 44 | # target ip netmask | ||
| 45 | self.netmask = None | ||
| 44 | 46 | ||
| 45 | self.machine = machine | 47 | self.machine = machine |
| 46 | self.rootfs = rootfs | 48 | self.rootfs = rootfs |
| @@ -192,6 +194,7 @@ class QemuRunner: | |||
| 192 | return False | 194 | return False |
| 193 | time.sleep(1) | 195 | time.sleep(1) |
| 194 | 196 | ||
| 197 | out = self.getOutput(output) | ||
| 195 | if self.is_alive(): | 198 | if self.is_alive(): |
| 196 | logger.info("qemu started - qemu procces pid is %s" % self.qemupid) | 199 | logger.info("qemu started - qemu procces pid is %s" % self.qemupid) |
| 197 | if get_ip: | 200 | if get_ip: |
| @@ -203,17 +206,23 @@ class QemuRunner: | |||
| 203 | cmdline = re_control_char.sub('', cmdline) | 206 | cmdline = re_control_char.sub('', cmdline) |
| 204 | try: | 207 | try: |
| 205 | ips = re.findall("((?:[0-9]{1,3}\.){3}[0-9]{1,3})", cmdline.split("ip=")[1]) | 208 | ips = re.findall("((?:[0-9]{1,3}\.){3}[0-9]{1,3})", cmdline.split("ip=")[1]) |
| 206 | if not ips or len(ips) != 3: | 209 | self.ip = ips[0] |
| 207 | raise ValueError | 210 | self.server_ip = ips[1] |
| 208 | else: | 211 | logger.info("qemu cmdline used:\n{}".format(cmdline)) |
| 209 | self.ip = ips[0] | ||
| 210 | self.server_ip = ips[1] | ||
| 211 | except (IndexError, ValueError): | 212 | except (IndexError, ValueError): |
| 212 | logger.info("Couldn't get ip from qemu process arguments! Here is the qemu command line used:\n%s\nand output from runqemu:\n%s" % (cmdline, self.getOutput(output))) | 213 | # Try to get network configuration from runqemu output |
| 213 | self._dump_host() | 214 | match = re.match('.*Network configuration: ([0-9.]+)::([0-9.]+):([0-9.]+)$.*', |
| 214 | self.stop() | 215 | out, re.MULTILINE|re.DOTALL) |
| 215 | return False | 216 | if match: |
| 216 | logger.info("qemu cmdline used:\n{}".format(cmdline)) | 217 | self.ip, self.server_ip, self.netmask = match.groups() |
| 218 | else: | ||
| 219 | logger.error("Couldn't get ip from qemu command line and runqemu output! " | ||
| 220 | "Here is the qemu command line used:\n%s\n" | ||
| 221 | "and output from runqemu:\n%s" % (cmdline, out)) | ||
| 222 | self._dump_host() | ||
| 223 | self.stop() | ||
| 224 | return False | ||
| 225 | |||
| 217 | logger.info("Target IP: %s" % self.ip) | 226 | logger.info("Target IP: %s" % self.ip) |
| 218 | logger.info("Server IP: %s" % self.server_ip) | 227 | logger.info("Server IP: %s" % self.server_ip) |
| 219 | 228 | ||
| @@ -222,12 +231,11 @@ class QemuRunner: | |||
| 222 | if not self.thread.connection_established.wait(self.boottime): | 231 | if not self.thread.connection_established.wait(self.boottime): |
| 223 | logger.error("Didn't receive a console connection from qemu. " | 232 | logger.error("Didn't receive a console connection from qemu. " |
| 224 | "Here is the qemu command line used:\n%s\nand " | 233 | "Here is the qemu command line used:\n%s\nand " |
| 225 | "output from runqemu:\n%s" % (cmdline, | 234 | "output from runqemu:\n%s" % (cmdline, out)) |
| 226 | self.getOutput(output))) | ||
| 227 | self.stop_thread() | 235 | self.stop_thread() |
| 228 | return False | 236 | return False |
| 229 | 237 | ||
| 230 | logger.info("Output from runqemu:\n%s", self.getOutput(output)) | 238 | logger.info("Output from runqemu:\n%s", out) |
| 231 | logger.info("Waiting at most %d seconds for login banner" % self.boottime) | 239 | logger.info("Waiting at most %d seconds for login banner" % self.boottime) |
| 232 | endtime = time.time() + self.boottime | 240 | endtime = time.time() + self.boottime |
| 233 | socklist = [self.server_socket] | 241 | socklist = [self.server_socket] |
