From nobody Sun Feb 8 09:27:03 2026 Delivered-To: importer@patchew.org Received-SPF: pass (zoho.com: domain of redhat.com designates 209.132.183.28 as permitted sender) client-ip=209.132.183.28; envelope-from=libvir-list-bounces@redhat.com; helo=mx1.redhat.com; Authentication-Results: mx.zohomail.com; spf=pass (zoho.com: domain of redhat.com designates 209.132.183.28 as permitted sender) smtp.mailfrom=libvir-list-bounces@redhat.com Return-Path: Received: from mx1.redhat.com (mx1.redhat.com [209.132.183.28]) by mx.zohomail.com with SMTPS id 1500643852838435.24043479383397; Fri, 21 Jul 2017 06:30:52 -0700 (PDT) Received: from smtp.corp.redhat.com (int-mx04.intmail.prod.int.phx2.redhat.com [10.5.11.14]) (using TLSv1.2 with cipher AECDH-AES256-SHA (256/256 bits)) (No client certificate requested) by mx1.redhat.com (Postfix) with ESMTPS id B93B0C00DB80; Fri, 21 Jul 2017 13:30:49 +0000 (UTC) Received: from colo-mx.corp.redhat.com (colo-mx01.intmail.prod.int.phx2.redhat.com [10.5.11.20]) by smtp.corp.redhat.com (Postfix) with ESMTPS id 976E48B304; Fri, 21 Jul 2017 13:30:49 +0000 (UTC) Received: from lists01.pubmisc.prod.ext.phx2.redhat.com (lists01.pubmisc.prod.ext.phx2.redhat.com [10.5.19.33]) by colo-mx.corp.redhat.com (Postfix) with ESMTP id 4BF3D180B467; Fri, 21 Jul 2017 13:30:49 +0000 (UTC) Received: from smtp.corp.redhat.com (int-mx04.intmail.prod.int.phx2.redhat.com [10.5.11.14]) by lists01.pubmisc.prod.ext.phx2.redhat.com (8.13.8/8.13.8) with ESMTP id v6LDUk5F023838 for ; Fri, 21 Jul 2017 09:30:46 -0400 Received: by smtp.corp.redhat.com (Postfix) id B4A788B320; Fri, 21 Jul 2017 13:30:46 +0000 (UTC) Received: from antique-work.brq.redhat.com (unknown [10.43.2.41]) by smtp.corp.redhat.com (Postfix) with ESMTP id 3C4938BE29 for ; Fri, 21 Jul 2017 13:30:40 +0000 (UTC) DMARC-Filter: OpenDMARC Filter v1.3.2 mx1.redhat.com B93B0C00DB80 Authentication-Results: ext-mx07.extmail.prod.ext.phx2.redhat.com; dmarc=none (p=none dis=none) header.from=redhat.com Authentication-Results: ext-mx07.extmail.prod.ext.phx2.redhat.com; spf=pass smtp.mailfrom=libvir-list-bounces@redhat.com DKIM-Filter: OpenDKIM Filter v2.11.0 mx1.redhat.com B93B0C00DB80 From: Pavel Hrdina To: libvir-list@redhat.com Date: Fri, 21 Jul 2017 15:30:12 +0200 Message-Id: In-Reply-To: References: In-Reply-To: References: X-Scanned-By: MIMEDefang 2.79 on 10.5.11.14 X-loop: libvir-list@redhat.com Subject: [libvirt] [PATCH v2 4/7] tests: rewrite host CPU mocking X-BeenThere: libvir-list@redhat.com X-Mailman-Version: 2.1.12 Precedence: junk List-Id: Development discussions about the libvirt library & tools List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable Sender: libvir-list-bounces@redhat.com Errors-To: libvir-list-bounces@redhat.com X-Scanned-By: MIMEDefang 2.79 on 10.5.11.14 X-Greylist: Sender IP whitelisted, not delayed by milter-greylist-4.5.16 (mx1.redhat.com [10.5.110.31]); Fri, 21 Jul 2017 13:30:50 +0000 (UTC) X-ZohoMail: RSF_0 Z_629925259 SPT_0 Content-Type: text/plain; charset="utf-8" Move all the host CPU data into a separate file and rewrite qemucpumock to not use passed @caps. This is preparation for following patch which will replace virCaps argument with virArch. Signed-off-by: Pavel Hrdina Reviewed-by: Jiri Denemark --- Notes: New in v2 tests/domaincapstest.c | 55 +---------------- tests/qemucpumock.c | 13 ++-- tests/testutilshostcpus.h | 148 ++++++++++++++++++++++++++++++++++++++++++= ++++ tests/testutilsqemu.c | 93 +++-------------------------- tests/testutilsxen.c | 29 +-------- 5 files changed, 167 insertions(+), 171 deletions(-) create mode 100644 tests/testutilshostcpus.h diff --git a/tests/domaincapstest.c b/tests/domaincapstest.c index 5a36fcf29d..e17aa8ade3 100644 --- a/tests/domaincapstest.c +++ b/tests/domaincapstest.c @@ -117,38 +117,7 @@ fillAllCaps(virDomainCapsPtr domCaps) =20 #if WITH_QEMU # include "testutilsqemu.h" - -static virCPUDef aarch64Cpu =3D { - .sockets =3D 1, - .cores =3D 1, - .threads =3D 1, -}; - -static virCPUDef ppc64leCpu =3D { - .type =3D VIR_CPU_TYPE_HOST, - .arch =3D VIR_ARCH_PPC64LE, - .model =3D (char *) "POWER8", - .sockets =3D 1, - .cores =3D 1, - .threads =3D 1, -}; - -static virCPUDef x86Cpu =3D { - .type =3D VIR_CPU_TYPE_HOST, - .arch =3D VIR_ARCH_X86_64, - .model =3D (char *) "Broadwell", - .sockets =3D 1, - .cores =3D 1, - .threads =3D 1, -}; - -static virCPUDef s390Cpu =3D { - .type =3D VIR_CPU_TYPE_HOST, - .arch =3D VIR_ARCH_S390X, - .sockets =3D 1, - .cores =3D 1, - .threads =3D 1, -}; +# include "testutilshostcpus.h" =20 static int fakeHostCPU(virCapsPtr caps, @@ -156,32 +125,14 @@ fakeHostCPU(virCapsPtr caps, { virCPUDefPtr cpu; =20 - switch (arch) { - case VIR_ARCH_AARCH64: - cpu =3D &aarch64Cpu; - break; - - case VIR_ARCH_PPC64LE: - cpu =3D &ppc64leCpu; - break; - - case VIR_ARCH_X86_64: - cpu =3D &x86Cpu; - break; - - case VIR_ARCH_S390X: - cpu =3D &s390Cpu; - break; - - default: + if (!(cpu =3D testUtilsHostCpusGetDefForArch(arch))) { virReportError(VIR_ERR_INTERNAL_ERROR, "cannot fake host CPU for arch %s", virArchToString(arch)); return -1; } =20 - if (!(caps->host.cpu =3D virCPUDefCopy(cpu))) - return -1; + qemuTestSetHostCPU(caps, cpu); =20 return 0; } diff --git a/tests/qemucpumock.c b/tests/qemucpumock.c index f0a113ffce..38827584ea 100644 --- a/tests/qemucpumock.c +++ b/tests/qemucpumock.c @@ -16,20 +16,23 @@ =20 #include =20 -#include "internal.h" +#include + +#include "conf/cpu_conf.h" +#include "cpu/cpu.h" #include "qemu/qemu_capabilities.h" #define __QEMU_CAPSPRIV_H_ALLOW__ #include "qemu/qemu_capspriv.h" #undef __QEMU_CAPSPRIV_H_ALLOW__ +#include "testutilshostcpus.h" =20 =20 virCPUDefPtr -virQEMUCapsProbeHostCPUForEmulator(virCapsPtr caps, +virQEMUCapsProbeHostCPUForEmulator(virCapsPtr caps ATTRIBUTE_UNUSED, virQEMUCapsPtr qemuCaps ATTRIBUTE_UNUSE= D, virDomainVirtType type ATTRIBUTE_UNUSED) { - if (!caps || !caps->host.cpu || !caps->host.cpu->model) - return NULL; + const char *model =3D getenv("VIR_TEST_MOCK_FAKE_HOST_CPU"); =20 - return virCPUDefCopy(caps->host.cpu); + return testUtilsHostCpusGetDefForModel(model); } diff --git a/tests/testutilshostcpus.h b/tests/testutilshostcpus.h new file mode 100644 index 0000000000..f0ab23b962 --- /dev/null +++ b/tests/testutilshostcpus.h @@ -0,0 +1,148 @@ +#include "conf/cpu_conf.h" +#include "internal.h" +#include "util/virarch.h" + +static virCPUFeatureDef cpuDefaultFeatures[] =3D { + { (char *) "ds", -1 }, + { (char *) "acpi", -1 }, + { (char *) "ss", -1 }, + { (char *) "ht", -1 }, + { (char *) "tm", -1 }, + { (char *) "pbe", -1 }, + { (char *) "ds_cpl", -1 }, + { (char *) "vmx", -1 }, + { (char *) "est", -1 }, + { (char *) "tm2", -1 }, + { (char *) "cx16", -1 }, + { (char *) "xtpr", -1 }, + { (char *) "lahf_lm", -1 }, +}; +static virCPUDef cpuDefaultData =3D { + .type =3D VIR_CPU_TYPE_HOST, + .arch =3D VIR_ARCH_X86_64, + .model =3D (char *) "core2duo", + .vendor =3D (char *) "Intel", + .sockets =3D 1, + .cores =3D 2, + .threads =3D 1, + .nfeatures =3D ARRAY_CARDINALITY(cpuDefaultFeatures), + .nfeatures_max =3D ARRAY_CARDINALITY(cpuDefaultFeatures), + .features =3D cpuDefaultFeatures, +}; + +static virCPUFeatureDef cpuHaswellFeatures[] =3D { + { (char *) "vme", -1 }, + { (char *) "ds", -1 }, + { (char *) "acpi", -1 }, + { (char *) "ss", -1 }, + { (char *) "ht", -1 }, + { (char *) "tm", -1 }, + { (char *) "pbe", -1 }, + { (char *) "dtes64", -1 }, + { (char *) "monitor", -1 }, + { (char *) "ds_cpl", -1 }, + { (char *) "vmx", -1 }, + { (char *) "smx", -1 }, + { (char *) "est", -1 }, + { (char *) "tm2", -1 }, + { (char *) "xtpr", -1 }, + { (char *) "pdcm", -1 }, + { (char *) "osxsave", -1 }, + { (char *) "f16c", -1 }, + { (char *) "rdrand", -1 }, + { (char *) "cmt", -1 }, + { (char *) "pdpe1gb", -1 }, + { (char *) "abm", -1 }, + { (char *) "invtsc", -1 }, + { (char *) "lahf_lm", -1 }, +}; +static virCPUDef cpuHaswellData =3D { + .type =3D VIR_CPU_TYPE_HOST, + .arch =3D VIR_ARCH_X86_64, + .model =3D (char *) "Haswell", + .vendor =3D (char *) "Intel", + .sockets =3D 1, + .cores =3D 2, + .threads =3D 2, + .nfeatures =3D ARRAY_CARDINALITY(cpuHaswellFeatures), + .nfeatures_max =3D ARRAY_CARDINALITY(cpuHaswellFeatures), + .features =3D cpuHaswellFeatures, +}; + +static virCPUDef cpuBroadwellData =3D { + .type =3D VIR_CPU_TYPE_HOST, + .arch =3D VIR_ARCH_X86_64, + .model =3D (char *) "Broadwell", + .sockets =3D 1, + .cores =3D 2, + .threads =3D 2, +}; + +static virCPUDef cpuPower8Data =3D { + .type =3D VIR_CPU_TYPE_HOST, + .arch =3D VIR_ARCH_PPC64, + .model =3D (char *) "POWER8", + .sockets =3D 1, + .cores =3D 8, + .threads =3D 8, +}; + +static virCPUDef cpuPower9Data =3D { + .type =3D VIR_CPU_TYPE_HOST, + .arch =3D VIR_ARCH_PPC64, + .model =3D (char *) "POWER9", + .sockets =3D 1, + .cores =3D 16, + .threads =3D 1, +}; + +static virCPUDef cpuAarch64Data =3D { + .type =3D VIR_CPU_TYPE_HOST, + .arch =3D VIR_ARCH_AARCH64, + .sockets =3D 1, + .cores =3D 4, + .threads =3D 1, +}; + +static virCPUDef cpuS390Data =3D { + .type =3D VIR_CPU_TYPE_HOST, + .arch =3D VIR_ARCH_S390X, + .sockets =3D 2, + .cores =3D 1, + .threads =3D 1, +}; + +static inline virCPUDefPtr +testUtilsHostCpusGetDefForModel(const char *model) +{ + if (!model) + return NULL; + + if (STREQ(model, "core2duo")) + return virCPUDefCopy(&cpuDefaultData); + else if (STREQ(model, "Haswell")) + return virCPUDefCopy(&cpuHaswellData); + else if (STREQ(model, "Broadwell")) + return virCPUDefCopy(&cpuBroadwellData); + else if (STREQ(model, "POWER8")) + return virCPUDefCopy(&cpuPower8Data); + else if (STREQ(model, "POWER9")) + return virCPUDefCopy(&cpuPower9Data); + + return NULL; +} + +static inline virCPUDefPtr +testUtilsHostCpusGetDefForArch(virArch arch) +{ + if (ARCH_IS_X86(arch)) + return virCPUDefCopy(&cpuBroadwellData); + else if (ARCH_IS_PPC64(arch)) + return virCPUDefCopy(&cpuPower8Data); + else if (ARCH_IS_S390(arch)) + return virCPUDefCopy(&cpuS390Data); + else if (arch =3D=3D VIR_ARCH_AARCH64) + return virCPUDefCopy(&cpuAarch64Data); + + return NULL; +} diff --git a/tests/testutilsqemu.c b/tests/testutilsqemu.c index 88e11ba14a..67b21c9893 100644 --- a/tests/testutilsqemu.c +++ b/tests/testutilsqemu.c @@ -3,6 +3,7 @@ # include =20 # include "testutilsqemu.h" +# include "testutilshostcpus.h" # include "testutils.h" # include "viralloc.h" # include "cpu_conf.h" @@ -19,91 +20,6 @@ virCPUDefPtr cpuHaswell; virCPUDefPtr cpuPower8; virCPUDefPtr cpuPower9; =20 -static virCPUFeatureDef cpuDefaultFeatures[] =3D { - { (char *) "ds", -1 }, - { (char *) "acpi", -1 }, - { (char *) "ss", -1 }, - { (char *) "ht", -1 }, - { (char *) "tm", -1 }, - { (char *) "pbe", -1 }, - { (char *) "ds_cpl", -1 }, - { (char *) "vmx", -1 }, - { (char *) "est", -1 }, - { (char *) "tm2", -1 }, - { (char *) "cx16", -1 }, - { (char *) "xtpr", -1 }, - { (char *) "lahf_lm", -1 }, -}; -static virCPUDef cpuDefaultData =3D { - .type =3D VIR_CPU_TYPE_HOST, - .arch =3D VIR_ARCH_X86_64, - .model =3D (char *) "core2duo", - .vendor =3D (char *) "Intel", - .sockets =3D 1, - .cores =3D 2, - .threads =3D 1, - .nfeatures =3D ARRAY_CARDINALITY(cpuDefaultFeatures), - .nfeatures_max =3D ARRAY_CARDINALITY(cpuDefaultFeatures), - .features =3D cpuDefaultFeatures, -}; - -static virCPUFeatureDef cpuHaswellFeatures[] =3D { - { (char *) "vme", -1 }, - { (char *) "ds", -1 }, - { (char *) "acpi", -1 }, - { (char *) "ss", -1 }, - { (char *) "ht", -1 }, - { (char *) "tm", -1 }, - { (char *) "pbe", -1 }, - { (char *) "dtes64", -1 }, - { (char *) "monitor", -1 }, - { (char *) "ds_cpl", -1 }, - { (char *) "vmx", -1 }, - { (char *) "smx", -1 }, - { (char *) "est", -1 }, - { (char *) "tm2", -1 }, - { (char *) "xtpr", -1 }, - { (char *) "pdcm", -1 }, - { (char *) "osxsave", -1 }, - { (char *) "f16c", -1 }, - { (char *) "rdrand", -1 }, - { (char *) "cmt", -1 }, - { (char *) "pdpe1gb", -1 }, - { (char *) "abm", -1 }, - { (char *) "invtsc", -1 }, - { (char *) "lahf_lm", -1 }, -}; -static virCPUDef cpuHaswellData =3D { - .type =3D VIR_CPU_TYPE_HOST, - .arch =3D VIR_ARCH_X86_64, - .model =3D (char *) "Haswell", - .vendor =3D (char *) "Intel", - .sockets =3D 1, - .cores =3D 2, - .threads =3D 2, - .nfeatures =3D ARRAY_CARDINALITY(cpuHaswellFeatures), - .nfeatures_max =3D ARRAY_CARDINALITY(cpuHaswellFeatures), - .features =3D cpuHaswellFeatures, -}; - -static virCPUDef cpuPower8Data =3D { - .type =3D VIR_CPU_TYPE_HOST, - .arch =3D VIR_ARCH_PPC64, - .model =3D (char *) "POWER8", - .sockets =3D 1, - .cores =3D 8, - .threads =3D 8, -}; - -static virCPUDef cpuPower9Data =3D { - .type =3D VIR_CPU_TYPE_HOST, - .arch =3D VIR_ARCH_PPC64, - .model =3D (char *) "POWER9", - .sockets =3D 1, - .cores =3D 16, - .threads =3D 1, -}; - typedef enum { TEST_UTILS_QEMU_BIN_I686, TEST_UTILS_QEMU_BIN_X86_64, @@ -557,8 +473,13 @@ qemuTestSetHostCPU(virCapsPtr caps, cpu =3D cpuPower8; } =20 - if (cpu) + if (cpu) { caps->host.arch =3D cpu->arch; + if (cpu->model) + setenv("VIR_TEST_MOCK_FAKE_HOST_CPU", cpu->model, 1); + else + unsetenv("VIR_TEST_MOCK_FAKE_HOST_CPU"); + } caps->host.cpu =3D cpu; } =20 diff --git a/tests/testutilsxen.c b/tests/testutilsxen.c index c4fc1465e7..4328441b79 100644 --- a/tests/testutilsxen.c +++ b/tests/testutilsxen.c @@ -4,36 +4,9 @@ #include =20 #include "testutilsxen.h" +#include "testutilshostcpus.h" #include "domain_conf.h" =20 -static virCPUFeatureDef cpuDefaultFeatures[] =3D { - { (char *) "ds", -1 }, - { (char *) "acpi", -1 }, - { (char *) "ss", -1 }, - { (char *) "ht", -1 }, - { (char *) "tm", -1 }, - { (char *) "pbe", -1 }, - { (char *) "ds_cpl", -1 }, - { (char *) "vmx", -1 }, - { (char *) "est", -1 }, - { (char *) "tm2", -1 }, - { (char *) "cx16", -1 }, - { (char *) "xtpr", -1 }, - { (char *) "lahf_lm", -1 }, -}; -static virCPUDef cpuDefaultData =3D { - .type =3D VIR_CPU_TYPE_HOST, - .arch =3D VIR_ARCH_X86_64, - .model =3D (char *) "core2duo", - .vendor =3D (char *) "Intel", - .sockets =3D 1, - .cores =3D 2, - .threads =3D 1, - .nfeatures =3D ARRAY_CARDINALITY(cpuDefaultFeatures), - .nfeatures_max =3D ARRAY_CARDINALITY(cpuDefaultFeatures), - .features =3D cpuDefaultFeatures, -}; - virCapsPtr testXenCapsInit(void) { struct utsname utsname; --=20 2.13.3 -- libvir-list mailing list libvir-list@redhat.com https://www.redhat.com/mailman/listinfo/libvir-list