summaryrefslogtreecommitdiffstats
path: root/meta/lib/oeqa/utils
diff options
context:
space:
mode:
Diffstat (limited to 'meta/lib/oeqa/utils')
-rw-r--r--meta/lib/oeqa/utils/qemurunner.py17
1 files changed, 13 insertions, 4 deletions
diff --git a/meta/lib/oeqa/utils/qemurunner.py b/meta/lib/oeqa/utils/qemurunner.py
index d40b3b808b..f943034092 100644
--- a/meta/lib/oeqa/utils/qemurunner.py
+++ b/meta/lib/oeqa/utils/qemurunner.py
@@ -28,7 +28,8 @@ re_control_char = re.compile('[%s]' % re.escape("".join(control_chars)))
28 28
29class QemuRunner: 29class QemuRunner:
30 30
31 def __init__(self, machine, rootfs, display, tmpdir, deploy_dir_image, logfile, boottime, dump_dir, dump_host_cmds, use_kvm, logger): 31 def __init__(self, machine, rootfs, display, tmpdir, deploy_dir_image, logfile, boottime, dump_dir, dump_host_cmds,
32 use_kvm, logger, use_slirp=False):
32 33
33 # Popen object for runqemu 34 # Popen object for runqemu
34 self.runqemu = None 35 self.runqemu = None
@@ -51,6 +52,7 @@ class QemuRunner:
51 self.logged = False 52 self.logged = False
52 self.thread = None 53 self.thread = None
53 self.use_kvm = use_kvm 54 self.use_kvm = use_kvm
55 self.use_slirp = use_slirp
54 self.msg = '' 56 self.msg = ''
55 57
56 self.runqemutime = 120 58 self.runqemutime = 120
@@ -129,6 +131,8 @@ class QemuRunner:
129 self.logger.debug('Not using kvm for runqemu') 131 self.logger.debug('Not using kvm for runqemu')
130 if not self.display: 132 if not self.display:
131 launch_cmd += ' nographic' 133 launch_cmd += ' nographic'
134 if self.use_slirp:
135 launch_cmd += ' slirp'
132 launch_cmd += ' %s %s' % (self.machine, self.rootfs) 136 launch_cmd += ' %s %s' % (self.machine, self.rootfs)
133 137
134 return self.launch(launch_cmd, qemuparams=qemuparams, get_ip=get_ip, extra_bootparams=extra_bootparams, env=env) 138 return self.launch(launch_cmd, qemuparams=qemuparams, get_ip=get_ip, extra_bootparams=extra_bootparams, env=env)
@@ -238,9 +242,14 @@ class QemuRunner:
238 # because is possible to have control characters 242 # because is possible to have control characters
239 cmdline = re_control_char.sub(' ', cmdline) 243 cmdline = re_control_char.sub(' ', cmdline)
240 try: 244 try:
241 ips = re.findall(r"((?:[0-9]{1,3}\.){3}[0-9]{1,3})", cmdline.split("ip=")[1]) 245 if self.use_slirp:
242 self.ip = ips[0] 246 tcp_ports = cmdline.split("hostfwd=tcp::")[1]
243 self.server_ip = ips[1] 247 host_port = tcp_ports[:tcp_ports.find('-')]
248 self.ip = "localhost:%s" % host_port
249 else:
250 ips = re.findall(r"((?:[0-9]{1,3}\.){3}[0-9]{1,3})", cmdline.split("ip=")[1])
251 self.ip = ips[0]
252 self.server_ip = ips[1]
244 self.logger.debug("qemu cmdline used:\n{}".format(cmdline)) 253 self.logger.debug("qemu cmdline used:\n{}".format(cmdline))
245 except (IndexError, ValueError): 254 except (IndexError, ValueError):
246 # Try to get network configuration from runqemu output 255 # Try to get network configuration from runqemu output