Skip to content

Commit b77d6c9

Browse files
committed
qemudriver: Allow machine-specific options.
Signed-off-by: Joschka Seydell <joschka@seydell.org>
1 parent 22f4b81 commit b77d6c9

File tree

2 files changed

+15
-4
lines changed

2 files changed

+15
-4
lines changed

labgrid/driver/qemudriver.py

Lines changed: 4 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -156,19 +156,20 @@ def get_qemu_base_args(self):
156156
disk_opts = ""
157157
if self.disk_opts:
158158
disk_opts = f",{self.disk_opts}"
159-
if self.machine == "vexpress-a9":
159+
machine_base = self.machine.split(',')[0]
160+
if machine_base == "vexpress-a9":
160161
cmd.append("-drive")
161162
cmd.append(
162163
f"if=sd,format={disk_format},file={disk_path},id=mmc0{disk_opts}")
163164
boot_args.append("root=/dev/mmcblk0p1 rootfstype=ext4 rootwait")
164-
elif self.machine in ["pc", "q35", "virt"]:
165+
elif machine_base in ["pc", "q35", "virt"]:
165166
cmd.append("-drive")
166167
cmd.append(
167168
f"if=virtio,format={disk_format},file={disk_path}{disk_opts}")
168169
boot_args.append("root=/dev/vda rootwait")
169170
else:
170171
raise NotImplementedError(
171-
f"QEMU disk image support not implemented for machine '{self.machine}'"
172+
f"QEMU disk image support not implemented for machine '{machine_base}'"
172173
)
173174
if self.rootfs is not None:
174175
cmd.append("-fsdev")

tests/test_qemudriver.py

Lines changed: 11 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -13,7 +13,8 @@ def qemu_env(tmpdir):
1313
role: foo
1414
images:
1515
kernel: "test.zImage"
16-
dtb: test.dtb"
16+
disk: "test.qcow2"
17+
dtb: "test.dtb"
1718
tools:
1819
qemu: "qemu-system-arm"
1920
paths:
@@ -69,6 +70,15 @@ def qemu_version_mock(mocker):
6970
def test_qemu_instance(qemu_target, qemu_driver):
7071
assert (isinstance(qemu_driver, QEMUDriver))
7172

73+
def test_qemu_get_qemu_base_args_disk(qemu_target, qemu_driver):
74+
qemu_driver.disk = 'disk'
75+
supported_machines = ['vexpress-a9', 'pc', 'q35', 'virt']
76+
for machine in supported_machines:
77+
qemu_driver.machine = machine
78+
qemu_driver.get_qemu_base_args()
79+
qemu_driver.machine = machine + ',option=value'
80+
qemu_driver.get_qemu_base_args()
81+
7282
def test_qemu_activate_deactivate(qemu_target, qemu_driver, qemu_version_mock):
7383
qemu_target.activate(qemu_driver)
7484
qemu_target.deactivate(qemu_driver)

0 commit comments

Comments
 (0)