Message ID | 20240905191434.694440-5-thuth@redhat.com (mailing list archive) |
---|---|
State | New, archived |
Headers | show |
Series | Allow check-qtest with "--without-default-devices" | expand |
On 5/9/24 21:14, Thomas Huth wrote: > In case QEMU has been configured with "--without-default-devices", the > "pc" machine type might be missing in the binary. We should check for > its availability before using it. > > Signed-off-by: Thomas Huth <thuth@redhat.com> > --- > tests/qtest/hd-geo-test.c | 71 +++++++++++++++++++++------------------ > 1 file changed, 38 insertions(+), 33 deletions(-) > > diff --git a/tests/qtest/hd-geo-test.c b/tests/qtest/hd-geo-test.c > index d08bffad91..85eb8d7668 100644 > --- a/tests/qtest/hd-geo-test.c > +++ b/tests/qtest/hd-geo-test.c > @@ -1074,17 +1074,26 @@ int main(int argc, char **argv) > } > } > > - qtest_add_func("hd-geo/ide/none", test_ide_none); > - qtest_add_func("hd-geo/ide/drive/mbr/blank", test_ide_drive_mbr_blank); > - qtest_add_func("hd-geo/ide/drive/mbr/lba", test_ide_drive_mbr_lba); > - qtest_add_func("hd-geo/ide/drive/mbr/chs", test_ide_drive_mbr_chs); > - qtest_add_func("hd-geo/ide/drive/cd_0", test_ide_drive_cd_0); > - qtest_add_func("hd-geo/ide/device/mbr/blank", test_ide_device_mbr_blank); > - qtest_add_func("hd-geo/ide/device/mbr/lba", test_ide_device_mbr_lba); > - qtest_add_func("hd-geo/ide/device/mbr/chs", test_ide_device_mbr_chs); > - qtest_add_func("hd-geo/ide/device/user/chs", test_ide_device_user_chs); > - qtest_add_func("hd-geo/ide/device/user/chst", test_ide_device_user_chst); > - if (have_qemu_img()) { > + if (qtest_has_machine("pc")) { > + qtest_add_func("hd-geo/ide/none", test_ide_none); > + qtest_add_func("hd-geo/ide/drive/mbr/blank", test_ide_drive_mbr_blank); > + qtest_add_func("hd-geo/ide/drive/mbr/lba", test_ide_drive_mbr_lba); > + qtest_add_func("hd-geo/ide/drive/mbr/chs", test_ide_drive_mbr_chs); > + qtest_add_func("hd-geo/ide/drive/cd_0", test_ide_drive_cd_0); > + qtest_add_func("hd-geo/ide/device/mbr/blank", test_ide_device_mbr_blank); > + qtest_add_func("hd-geo/ide/device/mbr/lba", test_ide_device_mbr_lba); > + qtest_add_func("hd-geo/ide/device/mbr/chs", test_ide_device_mbr_chs); > + qtest_add_func("hd-geo/ide/device/user/chs", test_ide_device_user_chs); > + qtest_add_func("hd-geo/ide/device/user/chst", test_ide_device_user_chst); Just wondering, could a qtest_add_machine_func() method be helpful? Maybe not if we want to check for multiple machines?
On 06/09/2024 09.50, Philippe Mathieu-Daudé wrote: > On 5/9/24 21:14, Thomas Huth wrote: >> In case QEMU has been configured with "--without-default-devices", the >> "pc" machine type might be missing in the binary. We should check for >> its availability before using it. >> >> Signed-off-by: Thomas Huth <thuth@redhat.com> >> --- >> tests/qtest/hd-geo-test.c | 71 +++++++++++++++++++++------------------ >> 1 file changed, 38 insertions(+), 33 deletions(-) >> >> diff --git a/tests/qtest/hd-geo-test.c b/tests/qtest/hd-geo-test.c >> index d08bffad91..85eb8d7668 100644 >> --- a/tests/qtest/hd-geo-test.c >> +++ b/tests/qtest/hd-geo-test.c >> @@ -1074,17 +1074,26 @@ int main(int argc, char **argv) >> } >> } >> - qtest_add_func("hd-geo/ide/none", test_ide_none); >> - qtest_add_func("hd-geo/ide/drive/mbr/blank", test_ide_drive_mbr_blank); >> - qtest_add_func("hd-geo/ide/drive/mbr/lba", test_ide_drive_mbr_lba); >> - qtest_add_func("hd-geo/ide/drive/mbr/chs", test_ide_drive_mbr_chs); >> - qtest_add_func("hd-geo/ide/drive/cd_0", test_ide_drive_cd_0); >> - qtest_add_func("hd-geo/ide/device/mbr/blank", >> test_ide_device_mbr_blank); >> - qtest_add_func("hd-geo/ide/device/mbr/lba", test_ide_device_mbr_lba); >> - qtest_add_func("hd-geo/ide/device/mbr/chs", test_ide_device_mbr_chs); >> - qtest_add_func("hd-geo/ide/device/user/chs", test_ide_device_user_chs); >> - qtest_add_func("hd-geo/ide/device/user/chst", >> test_ide_device_user_chst); >> - if (have_qemu_img()) { >> + if (qtest_has_machine("pc")) { >> + qtest_add_func("hd-geo/ide/none", test_ide_none); >> + qtest_add_func("hd-geo/ide/drive/mbr/blank", >> test_ide_drive_mbr_blank); >> + qtest_add_func("hd-geo/ide/drive/mbr/lba", test_ide_drive_mbr_lba); >> + qtest_add_func("hd-geo/ide/drive/mbr/chs", test_ide_drive_mbr_chs); >> + qtest_add_func("hd-geo/ide/drive/cd_0", test_ide_drive_cd_0); >> + qtest_add_func("hd-geo/ide/device/mbr/blank", >> test_ide_device_mbr_blank); >> + qtest_add_func("hd-geo/ide/device/mbr/lba", >> test_ide_device_mbr_lba); >> + qtest_add_func("hd-geo/ide/device/mbr/chs", >> test_ide_device_mbr_chs); >> + qtest_add_func("hd-geo/ide/device/user/chs", >> test_ide_device_user_chs); >> + qtest_add_func("hd-geo/ide/device/user/chst", >> test_ide_device_user_chst); > > Just wondering, could a qtest_add_machine_func() method be helpful? > Maybe not if we want to check for multiple machines? For adding multiple tests, I think a check at the beginning of the block is better than checking it over and over again. Thomas
diff --git a/tests/qtest/hd-geo-test.c b/tests/qtest/hd-geo-test.c index d08bffad91..85eb8d7668 100644 --- a/tests/qtest/hd-geo-test.c +++ b/tests/qtest/hd-geo-test.c @@ -1074,17 +1074,26 @@ int main(int argc, char **argv) } } - qtest_add_func("hd-geo/ide/none", test_ide_none); - qtest_add_func("hd-geo/ide/drive/mbr/blank", test_ide_drive_mbr_blank); - qtest_add_func("hd-geo/ide/drive/mbr/lba", test_ide_drive_mbr_lba); - qtest_add_func("hd-geo/ide/drive/mbr/chs", test_ide_drive_mbr_chs); - qtest_add_func("hd-geo/ide/drive/cd_0", test_ide_drive_cd_0); - qtest_add_func("hd-geo/ide/device/mbr/blank", test_ide_device_mbr_blank); - qtest_add_func("hd-geo/ide/device/mbr/lba", test_ide_device_mbr_lba); - qtest_add_func("hd-geo/ide/device/mbr/chs", test_ide_device_mbr_chs); - qtest_add_func("hd-geo/ide/device/user/chs", test_ide_device_user_chs); - qtest_add_func("hd-geo/ide/device/user/chst", test_ide_device_user_chst); - if (have_qemu_img()) { + if (qtest_has_machine("pc")) { + qtest_add_func("hd-geo/ide/none", test_ide_none); + qtest_add_func("hd-geo/ide/drive/mbr/blank", test_ide_drive_mbr_blank); + qtest_add_func("hd-geo/ide/drive/mbr/lba", test_ide_drive_mbr_lba); + qtest_add_func("hd-geo/ide/drive/mbr/chs", test_ide_drive_mbr_chs); + qtest_add_func("hd-geo/ide/drive/cd_0", test_ide_drive_cd_0); + qtest_add_func("hd-geo/ide/device/mbr/blank", test_ide_device_mbr_blank); + qtest_add_func("hd-geo/ide/device/mbr/lba", test_ide_device_mbr_lba); + qtest_add_func("hd-geo/ide/device/mbr/chs", test_ide_device_mbr_chs); + qtest_add_func("hd-geo/ide/device/user/chs", test_ide_device_user_chs); + qtest_add_func("hd-geo/ide/device/user/chst", test_ide_device_user_chst); + } + + if (!have_qemu_img()) { + g_test_message("QTEST_QEMU_IMG not set or qemu-img missing; " + "skipping hd-geo/override/* tests"); + goto test_add_done; + } + + if (qtest_has_machine("pc")) { qtest_add_func("hd-geo/override/ide", test_override_ide); if (qtest_has_device("lsi53c895a")) { qtest_add_func("hd-geo/override/scsi", test_override_scsi); @@ -1104,30 +1113,26 @@ int main(int argc, char **argv) qtest_add_func("hd-geo/override/virtio_blk", test_override_virtio_blk); } + } - if (qtest_has_machine("q35")) { - qtest_add_func("hd-geo/override/sata", test_override_sata); - qtest_add_func("hd-geo/override/zero_chs_q35", - test_override_zero_chs_q35); - if (qtest_has_device("lsi53c895a")) { - qtest_add_func("hd-geo/override/scsi_q35", - test_override_scsi_q35); - } - if (qtest_has_device("virtio-scsi-pci")) { - qtest_add_func("hd-geo/override/scsi_hot_unplug_q35", - test_override_scsi_hot_unplug_q35); - } - if (qtest_has_device("virtio-blk-pci")) { - qtest_add_func("hd-geo/override/virtio_hot_unplug_q35", - test_override_virtio_hot_unplug_q35); - qtest_add_func("hd-geo/override/virtio_blk_q35", - test_override_virtio_blk_q35); - } - + if (qtest_has_machine("q35")) { + qtest_add_func("hd-geo/override/sata", test_override_sata); + qtest_add_func("hd-geo/override/zero_chs_q35", + test_override_zero_chs_q35); + if (qtest_has_device("lsi53c895a")) { + qtest_add_func("hd-geo/override/scsi_q35", + test_override_scsi_q35); + } + if (qtest_has_device("virtio-scsi-pci")) { + qtest_add_func("hd-geo/override/scsi_hot_unplug_q35", + test_override_scsi_hot_unplug_q35); + } + if (qtest_has_device("virtio-blk-pci")) { + qtest_add_func("hd-geo/override/virtio_hot_unplug_q35", + test_override_virtio_hot_unplug_q35); + qtest_add_func("hd-geo/override/virtio_blk_q35", + test_override_virtio_blk_q35); } - } else { - g_test_message("QTEST_QEMU_IMG not set or qemu-img missing; " - "skipping hd-geo/override/* tests"); } test_add_done:
In case QEMU has been configured with "--without-default-devices", the "pc" machine type might be missing in the binary. We should check for its availability before using it. Signed-off-by: Thomas Huth <thuth@redhat.com> --- tests/qtest/hd-geo-test.c | 71 +++++++++++++++++++++------------------ 1 file changed, 38 insertions(+), 33 deletions(-)