def __init__(self, logger, server_ip, timeout=300, user='******', port=None, machine='', rootfs='', kernel='', kvm=False, slirp=False, dump_dir='', dump_host_cmds='', display='', bootlog='', tmpdir='', dir_image='', boottime=60, serial_ports=2, boot_patterns=defaultdict(str), ovmf=False, tmpfsdir=None, **kwargs): super(OEQemuTarget, self).__init__(logger, None, server_ip, timeout, user, port) self.server_ip = server_ip self.server_port = 0 self.machine = machine self.rootfs = rootfs self.kernel = kernel self.kvm = kvm self.ovmf = ovmf self.use_slirp = slirp self.boot_patterns = boot_patterns self.runner = QemuRunner(machine=machine, rootfs=rootfs, tmpdir=tmpdir, deploy_dir_image=dir_image, display=display, logfile=bootlog, boottime=boottime, use_kvm=kvm, use_slirp=slirp, dump_dir=dump_dir, dump_host_cmds=dump_host_cmds, logger=logger, serial_ports=serial_ports, boot_patterns=boot_patterns, use_ovmf=ovmf, tmpfsdir=tmpfsdir) dump_monitor_cmds = kwargs.get("testimage_dump_monitor") self.monitor_dumper = MonitorDumper(dump_monitor_cmds, dump_dir, self.runner) if self.monitor_dumper: self.monitor_dumper.create_dir("qmp") dump_target_cmds = kwargs.get("testimage_dump_target") self.target_dumper = TargetDumper(dump_target_cmds, dump_dir, self.runner) self.target_dumper.create_dir("qemu")
def __init__(self, d): super(QemuTarget, self).__init__(d) self.image_fstype = self.get_image_fstype(d) self.qemulog = os.path.join(self.testdir, "qemu_boot_log.%s" % self.datetime) self.rootfs = os.path.join( d.getVar("DEPLOY_DIR_IMAGE", True), d.getVar("IMAGE_LINK_NAME", True) + '.' + self.image_fstype) self.kernel = os.path.join( d.getVar("DEPLOY_DIR_IMAGE", True), d.getVar("KERNEL_IMAGETYPE", False) + '-' + d.getVar('MACHINE', False) + '.bin') dump_target_cmds = d.getVar("testimage_dump_target", True) dump_host_cmds = d.getVar("testimage_dump_host", True) dump_dir = d.getVar("TESTIMAGE_DUMP_DIR", True) if d.getVar("QEMU_USE_KVM", False) is not None \ and d.getVar("QEMU_USE_KVM", False) == "True" \ and "x86" in d.getVar("MACHINE", True): use_kvm = True else: use_kvm = False # Log QemuRunner log output to a file import oe.path bb.utils.mkdirhier(self.testdir) self.qemurunnerlog = os.path.join(self.testdir, 'qemurunner_log.%s' % self.datetime) logger = logging.getLogger('BitBake.QemuRunner') loggerhandler = logging.FileHandler(self.qemurunnerlog) loggerhandler.setFormatter( logging.Formatter("%(levelname)s: %(message)s")) logger.addHandler(loggerhandler) oe.path.symlink(os.path.basename(self.qemurunnerlog), os.path.join(self.testdir, 'qemurunner_log'), force=True) if d.getVar("DISTRO", True) == "poky-tiny": self.runner = QemuTinyRunner( machine=d.getVar("MACHINE", True), rootfs=self.rootfs, tmpdir=d.getVar("TMPDIR", True), deploy_dir_image=d.getVar("DEPLOY_DIR_IMAGE", True), display=d.getVar("BB_ORIGENV", False).getVar("DISPLAY", True), logfile=self.qemulog, kernel=self.kernel, boottime=int(d.getVar("TEST_QEMUBOOT_TIMEOUT", True))) else: self.runner = QemuRunner( machine=d.getVar("MACHINE", True), rootfs=self.rootfs, tmpdir=d.getVar("TMPDIR", True), deploy_dir_image=d.getVar("DEPLOY_DIR_IMAGE", True), display=d.getVar("BB_ORIGENV", False).getVar("DISPLAY", True), logfile=self.qemulog, boottime=int(d.getVar("TEST_QEMUBOOT_TIMEOUT", True)), use_kvm=use_kvm, dump_dir=dump_dir, dump_host_cmds=d.getVar("testimage_dump_host", True)) self.target_dumper = TargetDumper(dump_target_cmds, dump_dir, self.runner)
class OEQemuTarget(OESSHTarget): def __init__(self, logger, server_ip, timeout=300, user='******', port=None, machine='', rootfs='', kernel='', kvm=False, slirp=False, dump_dir='', dump_host_cmds='', display='', bootlog='', tmpdir='', dir_image='', boottime=60, serial_ports=2, boot_patterns=defaultdict(str), ovmf=False, tmpfsdir=None, **kwargs): super(OEQemuTarget, self).__init__(logger, None, server_ip, timeout, user, port) self.server_ip = server_ip self.server_port = 0 self.machine = machine self.rootfs = rootfs self.kernel = kernel self.kvm = kvm self.ovmf = ovmf self.use_slirp = slirp self.boot_patterns = boot_patterns self.runner = QemuRunner(machine=machine, rootfs=rootfs, tmpdir=tmpdir, deploy_dir_image=dir_image, display=display, logfile=bootlog, boottime=boottime, use_kvm=kvm, use_slirp=slirp, dump_dir=dump_dir, dump_host_cmds=dump_host_cmds, logger=logger, serial_ports=serial_ports, boot_patterns=boot_patterns, use_ovmf=ovmf, tmpfsdir=tmpfsdir) dump_monitor_cmds = kwargs.get("testimage_dump_monitor") self.monitor_dumper = MonitorDumper(dump_monitor_cmds, dump_dir, self.runner) if self.monitor_dumper: self.monitor_dumper.create_dir("qmp") dump_target_cmds = kwargs.get("testimage_dump_target") self.target_dumper = TargetDumper(dump_target_cmds, dump_dir, self.runner) self.target_dumper.create_dir("qemu") def start(self, params=None, extra_bootparams=None, runqemuparams=''): if self.use_slirp and not self.server_ip: self.logger.error( "Could not start qemu with slirp without server ip - provide 'TEST_SERVER_IP'" ) raise RuntimeError( "FAILED to start qemu - check the task log and the boot log") if self.runner.start(params, extra_bootparams=extra_bootparams, runqemuparams=runqemuparams): self.ip = self.runner.ip if self.use_slirp: target_ip_port = self.runner.ip.split(':') if len(target_ip_port) == 2: target_ip = target_ip_port[0] port = target_ip_port[1] self.ip = target_ip self.ssh = self.ssh + ['-p', port] self.scp = self.scp + ['-P', port] else: self.logger.error( "Could not get host machine port to connect qemu with slirp, ssh will not be " "able to connect to qemu with slirp") if self.runner.server_ip: self.server_ip = self.runner.server_ip else: self.stop() raise RuntimeError( "FAILED to start qemu - check the task log and the boot log") def stop(self): self.runner.stop()
def __init__(self, d, logger, image_fstype=None): import oe.types super(QemuTarget, self).__init__(d, logger) self.rootfs = '' self.kernel = '' self.image_fstype = '' if d.getVar('FIND_ROOTFS') == '1': self.image_fstype = image_fstype or self.get_image_fstype(d) self.rootfs = os.path.join( d.getVar("DEPLOY_DIR_IMAGE"), d.getVar("IMAGE_LINK_NAME") + '.' + self.image_fstype) self.kernel = os.path.join( d.getVar("DEPLOY_DIR_IMAGE"), d.getVar("KERNEL_IMAGETYPE", False) + '-' + d.getVar('MACHINE', False) + '.bin') self.qemulog = os.path.join(self.testdir, "qemu_boot_log.%s" % self.datetime) dump_target_cmds = d.getVar("testimage_dump_target") dump_host_cmds = d.getVar("testimage_dump_host") dump_dir = d.getVar("TESTIMAGE_DUMP_DIR") if not dump_dir: dump_dir = os.path.join(d.getVar('LOG_DIR'), 'runtime-hostdump') use_kvm = oe.types.qemu_use_kvm(d.getVar('QEMU_USE_KVM'), d.getVar('TARGET_ARCH')) # Log QemuRunner log output to a file import oe.path bb.utils.mkdirhier(self.testdir) self.qemurunnerlog = os.path.join(self.testdir, 'qemurunner_log.%s' % self.datetime) loggerhandler = logging.FileHandler(self.qemurunnerlog) loggerhandler.setFormatter( logging.Formatter("%(levelname)s: %(message)s")) self.logger.addHandler(loggerhandler) oe.path.symlink(os.path.basename(self.qemurunnerlog), os.path.join(self.testdir, 'qemurunner_log'), force=True) if d.getVar("DISTRO") == "poky-tiny": self.runner = QemuTinyRunner( machine=d.getVar("MACHINE"), rootfs=self.rootfs, tmpdir=d.getVar("TMPDIR"), deploy_dir_image=d.getVar("DEPLOY_DIR_IMAGE"), display=d.getVar("BB_ORIGENV", False).getVar("DISPLAY"), logfile=self.qemulog, kernel=self.kernel, boottime=int(d.getVar("TEST_QEMUBOOT_TIMEOUT")), logger=logger) else: self.runner = QemuRunner( machine=d.getVar("MACHINE"), rootfs=self.rootfs, tmpdir=d.getVar("TMPDIR"), deploy_dir_image=d.getVar("DEPLOY_DIR_IMAGE"), display=d.getVar("BB_ORIGENV", False).getVar("DISPLAY"), logfile=self.qemulog, boottime=int(d.getVar("TEST_QEMUBOOT_TIMEOUT")), use_kvm=use_kvm, dump_dir=dump_dir, dump_host_cmds=d.getVar("testimage_dump_host"), logger=logger) self.target_dumper = TargetDumper(dump_target_cmds, dump_dir, self.runner)