From 33582212cdad117579ff34dd56c61886306ae48a Mon Sep 17 00:00:00 2001 From: Peter Krempa Date: Tue, 4 Jan 2022 17:11:30 +0100 Subject: [PATCH] qemuTestCapsCacheInsert: Extract code for populating fake machine types MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Separate the code to aid further refactors. Signed-off-by: Peter Krempa Reviewed-by: Ján Tomko --- tests/testutilsqemu.c | 96 ++++++++++++++++++++++++------------------- 1 file changed, 53 insertions(+), 43 deletions(-) diff --git a/tests/testutilsqemu.c b/tests/testutilsqemu.c index bf3f919dde..94ff538382 100644 --- a/tests/testutilsqemu.c +++ b/tests/testutilsqemu.c @@ -335,10 +335,60 @@ void qemuTestDriverFree(virQEMUDriver *driver) virCPUDefFree(cpuPower9); } + +static void +qemuTestCapsPopulateFakeMachines(virQEMUCaps *caps, + virArch arch) +{ + size_t i; + const char *defaultRAMid = NULL; + + /* default-ram-id appeared in QEMU 5.2.0. Reflect + * this in our capabilities, i.e. set it for new + * enough versions only. */ + if (virQEMUCapsGetVersion(caps) >= 5002000) + defaultRAMid = qemu_default_ram_id[arch]; + + virQEMUCapsSetArch(caps, arch); + + for (i = 0; qemu_machines[arch][i] != NULL; i++) { + virQEMUCapsAddMachine(caps, + VIR_DOMAIN_VIRT_QEMU, + qemu_machines[arch][i], + NULL, + NULL, + 0, + false, + false, + true, + defaultRAMid, + false); + virQEMUCapsSet(caps, QEMU_CAPS_TCG); + } + + if (kvm_machines[arch] != NULL) { + for (i = 0; kvm_machines[arch][i] != NULL; i++) { + virQEMUCapsAddMachine(caps, + VIR_DOMAIN_VIRT_KVM, + kvm_machines[arch][i], + NULL, + NULL, + 0, + false, + false, + true, + defaultRAMid, + false); + virQEMUCapsSet(caps, QEMU_CAPS_KVM); + } + } +} + + int qemuTestCapsCacheInsert(virFileCache *cache, virQEMUCaps *caps) { - size_t i, j; + size_t i; for (i = 0; i < G_N_ELEMENTS(qemu_emulators); i++) { virQEMUCaps *tmpCaps; @@ -353,48 +403,8 @@ int qemuTestCapsCacheInsert(virFileCache *cache, if (!tmpCaps) return -1; - if (!virQEMUCapsHasMachines(tmpCaps)) { - const char *defaultRAMid = NULL; - - /* default-ram-id appeared in QEMU 5.2.0. Reflect - * this in our capabilities, i.e. set it for new - * enough versions only. */ - if (virQEMUCapsGetVersion(tmpCaps) >= 5002000) - defaultRAMid = qemu_default_ram_id[i]; - - virQEMUCapsSetArch(tmpCaps, i); - - for (j = 0; qemu_machines[i][j] != NULL; j++) { - virQEMUCapsAddMachine(tmpCaps, - VIR_DOMAIN_VIRT_QEMU, - qemu_machines[i][j], - NULL, - NULL, - 0, - false, - false, - true, - defaultRAMid, - false); - virQEMUCapsSet(tmpCaps, QEMU_CAPS_TCG); - } - if (kvm_machines[i] != NULL) { - for (j = 0; kvm_machines[i][j] != NULL; j++) { - virQEMUCapsAddMachine(tmpCaps, - VIR_DOMAIN_VIRT_KVM, - kvm_machines[i][j], - NULL, - NULL, - 0, - false, - false, - true, - defaultRAMid, - false); - virQEMUCapsSet(tmpCaps, QEMU_CAPS_KVM); - } - } - } + if (!virQEMUCapsHasMachines(tmpCaps)) + qemuTestCapsPopulateFakeMachines(tmpCaps, i); if (virFileCacheInsertData(cache, qemu_emulators[i], tmpCaps) < 0) { virObjectUnref(tmpCaps);