summaryrefslogtreecommitdiffstats
path: root/meta/lib/oeqa/targetcontrol.py
diff options
context:
space:
mode:
Diffstat (limited to 'meta/lib/oeqa/targetcontrol.py')
-rw-r--r--meta/lib/oeqa/targetcontrol.py21
1 files changed, 10 insertions, 11 deletions
diff --git a/meta/lib/oeqa/targetcontrol.py b/meta/lib/oeqa/targetcontrol.py
index 19f5a4ea7e..6e8b781973 100644
--- a/meta/lib/oeqa/targetcontrol.py
+++ b/meta/lib/oeqa/targetcontrol.py
@@ -7,17 +7,14 @@
7# This module is used by testimage.bbclass for setting up and controlling a target machine. 7# This module is used by testimage.bbclass for setting up and controlling a target machine.
8 8
9import os 9import os
10import shutil
11import subprocess 10import subprocess
12import bb 11import bb
13import traceback
14import sys
15import logging 12import logging
16from oeqa.utils.sshcontrol import SSHControl 13from oeqa.utils.sshcontrol import SSHControl
17from oeqa.utils.qemurunner import QemuRunner 14from oeqa.utils.qemurunner import QemuRunner
18from oeqa.utils.qemutinyrunner import QemuTinyRunner 15from oeqa.utils.qemutinyrunner import QemuTinyRunner
19from oeqa.utils.dump import TargetDumper 16from oeqa.utils.dump import TargetDumper
20from oeqa.controllers.testtargetloader import TestTargetLoader 17from oeqa.utils.dump import MonitorDumper
21from abc import ABCMeta, abstractmethod 18from abc import ABCMeta, abstractmethod
22 19
23class BaseTarget(object, metaclass=ABCMeta): 20class BaseTarget(object, metaclass=ABCMeta):
@@ -41,7 +38,7 @@ class BaseTarget(object, metaclass=ABCMeta):
41 if os.path.islink(sshloglink): 38 if os.path.islink(sshloglink):
42 os.unlink(sshloglink) 39 os.unlink(sshloglink)
43 os.symlink(self.sshlog, sshloglink) 40 os.symlink(self.sshlog, sshloglink)
44 self.logger.info("SSH log file: %s" % self.sshlog) 41 self.logger.info("SSH log file: %s" % self.sshlog)
45 42
46 @abstractmethod 43 @abstractmethod
47 def start(self, params=None, ssh=True, extra_bootparams=None): 44 def start(self, params=None, ssh=True, extra_bootparams=None):
@@ -106,8 +103,7 @@ class QemuTarget(BaseTarget):
106 self.rootfs = os.path.join(d.getVar("DEPLOY_DIR_IMAGE"), d.getVar("IMAGE_LINK_NAME") + '.' + self.image_fstype) 103 self.rootfs = os.path.join(d.getVar("DEPLOY_DIR_IMAGE"), d.getVar("IMAGE_LINK_NAME") + '.' + self.image_fstype)
107 self.kernel = os.path.join(d.getVar("DEPLOY_DIR_IMAGE"), d.getVar("KERNEL_IMAGETYPE", False) + '-' + d.getVar('MACHINE', False) + '.bin') 104 self.kernel = os.path.join(d.getVar("DEPLOY_DIR_IMAGE"), d.getVar("KERNEL_IMAGETYPE", False) + '-' + d.getVar('MACHINE', False) + '.bin')
108 self.qemulog = os.path.join(self.testdir, "qemu_boot_log.%s" % self.datetime) 105 self.qemulog = os.path.join(self.testdir, "qemu_boot_log.%s" % self.datetime)
109 dump_target_cmds = d.getVar("testimage_dump_target") 106 dump_monitor_cmds = d.getVar("testimage_dump_monitor")
110 dump_host_cmds = d.getVar("testimage_dump_host")
111 dump_dir = d.getVar("TESTIMAGE_DUMP_DIR") 107 dump_dir = d.getVar("TESTIMAGE_DUMP_DIR")
112 if not dump_dir: 108 if not dump_dir:
113 dump_dir = os.path.join(d.getVar('LOG_DIR'), 'runtime-hostdump') 109 dump_dir = os.path.join(d.getVar('LOG_DIR'), 'runtime-hostdump')
@@ -131,6 +127,7 @@ class QemuTarget(BaseTarget):
131 logfile = self.qemulog, 127 logfile = self.qemulog,
132 kernel = self.kernel, 128 kernel = self.kernel,
133 boottime = int(d.getVar("TEST_QEMUBOOT_TIMEOUT")), 129 boottime = int(d.getVar("TEST_QEMUBOOT_TIMEOUT")),
130 tmpfsdir = d.getVar("RUNQEMU_TMPFS_DIR"),
134 logger = logger) 131 logger = logger)
135 else: 132 else:
136 self.runner = QemuRunner(machine=d.getVar("MACHINE"), 133 self.runner = QemuRunner(machine=d.getVar("MACHINE"),
@@ -142,11 +139,13 @@ class QemuTarget(BaseTarget):
142 boottime = int(d.getVar("TEST_QEMUBOOT_TIMEOUT")), 139 boottime = int(d.getVar("TEST_QEMUBOOT_TIMEOUT")),
143 use_kvm = use_kvm, 140 use_kvm = use_kvm,
144 dump_dir = dump_dir, 141 dump_dir = dump_dir,
145 dump_host_cmds = d.getVar("testimage_dump_host"),
146 logger = logger, 142 logger = logger,
143 tmpfsdir = d.getVar("RUNQEMU_TMPFS_DIR"),
147 serial_ports = len(d.getVar("SERIAL_CONSOLES").split())) 144 serial_ports = len(d.getVar("SERIAL_CONSOLES").split()))
148 145
149 self.target_dumper = TargetDumper(dump_target_cmds, dump_dir, self.runner) 146 self.monitor_dumper = MonitorDumper(dump_monitor_cmds, dump_dir, self.runner)
147 if (self.monitor_dumper):
148 self.monitor_dumper.create_dir("qmp")
150 149
151 def deploy(self): 150 def deploy(self):
152 bb.utils.mkdirhier(self.testdir) 151 bb.utils.mkdirhier(self.testdir)
@@ -156,7 +155,7 @@ class QemuTarget(BaseTarget):
156 os.unlink(qemuloglink) 155 os.unlink(qemuloglink)
157 os.symlink(self.qemulog, qemuloglink) 156 os.symlink(self.qemulog, qemuloglink)
158 157
159 self.logger.info("rootfs file: %s" % self.rootfs) 158 self.logger.info("rootfs file: %s" % self.rootfs)
160 self.logger.info("Qemu log file: %s" % self.qemulog) 159 self.logger.info("Qemu log file: %s" % self.qemulog)
161 super(QemuTarget, self).deploy() 160 super(QemuTarget, self).deploy()
162 161
@@ -198,7 +197,7 @@ class QemuTarget(BaseTarget):
198 self.server_ip = self.runner.server_ip 197 self.server_ip = self.runner.server_ip
199 self.connection = SSHControl(ip=self.ip, logfile=self.sshlog) 198 self.connection = SSHControl(ip=self.ip, logfile=self.sshlog)
200 else: 199 else:
201 raise RuntimError("%s - FAILED to re-start qemu - check the task log and the boot log" % self.pn) 200 raise RuntimeError("%s - FAILED to re-start qemu - check the task log and the boot log" % self.pn)
202 201
203 def run_serial(self, command, timeout=60): 202 def run_serial(self, command, timeout=60):
204 return self.runner.run_serial(command, timeout=timeout) 203 return self.runner.run_serial(command, timeout=timeout)