summaryrefslogtreecommitdiffstats
path: root/meta/lib/oeqa/targetcontrol.py
diff options
context:
space:
mode:
authorSaul Wold <Saul.Wold@windriver.com>2021-04-26 07:45:10 -0700
committerRichard Purdie <richard.purdie@linuxfoundation.org>2021-04-27 15:11:47 +0100
commit3acbec85b00d693d2d731bc2b09cc40be1cc68e9 (patch)
tree3b86b76cc4932ff2d9fbde194f70057a5e99079f /meta/lib/oeqa/targetcontrol.py
parent2c86aba6f0eeb1fc747de2f518d1ec982398c54a (diff)
downloadpoky-3acbec85b00d693d2d731bc2b09cc40be1cc68e9.tar.gz
qemurunner: Add support for qmp commands
This adds support for the Qemu Machine Protocol [0] extending the current dump process for Host and Target. The commands are added in the testimage.bbclass. Currently, we setup qemu to stall until qmp gets connected and sends the initialization and continue commands, this works correctly. If the UNIX Socket does not exist, we wait an timeout to ensure to socket file is created. With this version, the monitor_dumper is created in OEQemuTarget but then set in OESSHTarget as that's where we get the SSH failure happens. Python's @property is used to create a setter/getter type of setup in OESSHTarget to get overridden by OEQemuTarget. By default the data is currently dumped to files for each command in TMPDIR/log/runtime-hostdump/<date>_qmp/unknown_<seq>_qemu_monitor as this is the naming convenstion in the dump.py code. We use the qmp.py from qemu, which needs to get installed in the recipe-sysroot-native of the target image. [0] https://github.com/qemu/qemu/blob/master/docs/interop/qmp-spec.txt (From OE-Core rev: 42af4cd2df72fc8ed9deb3fde4312909842fcf91) Signed-off-by: Saul Wold <saul.wold@windriver.com> Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
Diffstat (limited to 'meta/lib/oeqa/targetcontrol.py')
-rw-r--r--meta/lib/oeqa/targetcontrol.py3
1 files changed, 3 insertions, 0 deletions
diff --git a/meta/lib/oeqa/targetcontrol.py b/meta/lib/oeqa/targetcontrol.py
index 12057f855a..005ebaa7f3 100644
--- a/meta/lib/oeqa/targetcontrol.py
+++ b/meta/lib/oeqa/targetcontrol.py
@@ -17,6 +17,7 @@ from oeqa.utils.sshcontrol import SSHControl
17from oeqa.utils.qemurunner import QemuRunner 17from oeqa.utils.qemurunner import QemuRunner
18from oeqa.utils.qemutinyrunner import QemuTinyRunner 18from oeqa.utils.qemutinyrunner import QemuTinyRunner
19from oeqa.utils.dump import TargetDumper 19from oeqa.utils.dump import TargetDumper
20from oeqa.utils.dump import MonitorDumper
20from oeqa.controllers.testtargetloader import TestTargetLoader 21from oeqa.controllers.testtargetloader import TestTargetLoader
21from abc import ABCMeta, abstractmethod 22from abc import ABCMeta, abstractmethod
22 23
@@ -108,6 +109,7 @@ class QemuTarget(BaseTarget):
108 self.qemulog = os.path.join(self.testdir, "qemu_boot_log.%s" % self.datetime) 109 self.qemulog = os.path.join(self.testdir, "qemu_boot_log.%s" % self.datetime)
109 dump_target_cmds = d.getVar("testimage_dump_target") 110 dump_target_cmds = d.getVar("testimage_dump_target")
110 dump_host_cmds = d.getVar("testimage_dump_host") 111 dump_host_cmds = d.getVar("testimage_dump_host")
112 dump_monitor_cmds = d.getVar("testimage_dump_monitor")
111 dump_dir = d.getVar("TESTIMAGE_DUMP_DIR") 113 dump_dir = d.getVar("TESTIMAGE_DUMP_DIR")
112 if not dump_dir: 114 if not dump_dir:
113 dump_dir = os.path.join(d.getVar('LOG_DIR'), 'runtime-hostdump') 115 dump_dir = os.path.join(d.getVar('LOG_DIR'), 'runtime-hostdump')
@@ -149,6 +151,7 @@ class QemuTarget(BaseTarget):
149 serial_ports = len(d.getVar("SERIAL_CONSOLES").split())) 151 serial_ports = len(d.getVar("SERIAL_CONSOLES").split()))
150 152
151 self.target_dumper = TargetDumper(dump_target_cmds, dump_dir, self.runner) 153 self.target_dumper = TargetDumper(dump_target_cmds, dump_dir, self.runner)
154 self.monitor_dumper = MonitorDumper(dump_monitor_cmds, dump_dir, self.runner)
152 155
153 def deploy(self): 156 def deploy(self):
154 bb.utils.mkdirhier(self.testdir) 157 bb.utils.mkdirhier(self.testdir)