mirror of
https://gitlab.com/libvirt/libvirt.git
synced 2024-12-23 06:05:27 +00:00
tests: rewrite host CPU mocking
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 <phrdina@redhat.com> Reviewed-by: Jiri Denemark <jdenemar@redhat.com>
This commit is contained in:
parent
731cfd5fe8
commit
13554a9e7f
@ -117,38 +117,7 @@ fillAllCaps(virDomainCapsPtr domCaps)
|
|||||||
|
|
||||||
#if WITH_QEMU
|
#if WITH_QEMU
|
||||||
# include "testutilsqemu.h"
|
# include "testutilsqemu.h"
|
||||||
|
# include "testutilshostcpus.h"
|
||||||
static virCPUDef aarch64Cpu = {
|
|
||||||
.sockets = 1,
|
|
||||||
.cores = 1,
|
|
||||||
.threads = 1,
|
|
||||||
};
|
|
||||||
|
|
||||||
static virCPUDef ppc64leCpu = {
|
|
||||||
.type = VIR_CPU_TYPE_HOST,
|
|
||||||
.arch = VIR_ARCH_PPC64LE,
|
|
||||||
.model = (char *) "POWER8",
|
|
||||||
.sockets = 1,
|
|
||||||
.cores = 1,
|
|
||||||
.threads = 1,
|
|
||||||
};
|
|
||||||
|
|
||||||
static virCPUDef x86Cpu = {
|
|
||||||
.type = VIR_CPU_TYPE_HOST,
|
|
||||||
.arch = VIR_ARCH_X86_64,
|
|
||||||
.model = (char *) "Broadwell",
|
|
||||||
.sockets = 1,
|
|
||||||
.cores = 1,
|
|
||||||
.threads = 1,
|
|
||||||
};
|
|
||||||
|
|
||||||
static virCPUDef s390Cpu = {
|
|
||||||
.type = VIR_CPU_TYPE_HOST,
|
|
||||||
.arch = VIR_ARCH_S390X,
|
|
||||||
.sockets = 1,
|
|
||||||
.cores = 1,
|
|
||||||
.threads = 1,
|
|
||||||
};
|
|
||||||
|
|
||||||
static int
|
static int
|
||||||
fakeHostCPU(virCapsPtr caps,
|
fakeHostCPU(virCapsPtr caps,
|
||||||
@ -156,32 +125,14 @@ fakeHostCPU(virCapsPtr caps,
|
|||||||
{
|
{
|
||||||
virCPUDefPtr cpu;
|
virCPUDefPtr cpu;
|
||||||
|
|
||||||
switch (arch) {
|
if (!(cpu = testUtilsHostCpusGetDefForArch(arch))) {
|
||||||
case VIR_ARCH_AARCH64:
|
|
||||||
cpu = &aarch64Cpu;
|
|
||||||
break;
|
|
||||||
|
|
||||||
case VIR_ARCH_PPC64LE:
|
|
||||||
cpu = &ppc64leCpu;
|
|
||||||
break;
|
|
||||||
|
|
||||||
case VIR_ARCH_X86_64:
|
|
||||||
cpu = &x86Cpu;
|
|
||||||
break;
|
|
||||||
|
|
||||||
case VIR_ARCH_S390X:
|
|
||||||
cpu = &s390Cpu;
|
|
||||||
break;
|
|
||||||
|
|
||||||
default:
|
|
||||||
virReportError(VIR_ERR_INTERNAL_ERROR,
|
virReportError(VIR_ERR_INTERNAL_ERROR,
|
||||||
"cannot fake host CPU for arch %s",
|
"cannot fake host CPU for arch %s",
|
||||||
virArchToString(arch));
|
virArchToString(arch));
|
||||||
return -1;
|
return -1;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (!(caps->host.cpu = virCPUDefCopy(cpu)))
|
qemuTestSetHostCPU(caps, cpu);
|
||||||
return -1;
|
|
||||||
|
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
@ -16,20 +16,23 @@
|
|||||||
|
|
||||||
#include <config.h>
|
#include <config.h>
|
||||||
|
|
||||||
#include "internal.h"
|
#include <stdlib.h>
|
||||||
|
|
||||||
|
#include "conf/cpu_conf.h"
|
||||||
|
#include "cpu/cpu.h"
|
||||||
#include "qemu/qemu_capabilities.h"
|
#include "qemu/qemu_capabilities.h"
|
||||||
#define __QEMU_CAPSPRIV_H_ALLOW__
|
#define __QEMU_CAPSPRIV_H_ALLOW__
|
||||||
#include "qemu/qemu_capspriv.h"
|
#include "qemu/qemu_capspriv.h"
|
||||||
#undef __QEMU_CAPSPRIV_H_ALLOW__
|
#undef __QEMU_CAPSPRIV_H_ALLOW__
|
||||||
|
#include "testutilshostcpus.h"
|
||||||
|
|
||||||
|
|
||||||
virCPUDefPtr
|
virCPUDefPtr
|
||||||
virQEMUCapsProbeHostCPUForEmulator(virCapsPtr caps,
|
virQEMUCapsProbeHostCPUForEmulator(virCapsPtr caps ATTRIBUTE_UNUSED,
|
||||||
virQEMUCapsPtr qemuCaps ATTRIBUTE_UNUSED,
|
virQEMUCapsPtr qemuCaps ATTRIBUTE_UNUSED,
|
||||||
virDomainVirtType type ATTRIBUTE_UNUSED)
|
virDomainVirtType type ATTRIBUTE_UNUSED)
|
||||||
{
|
{
|
||||||
if (!caps || !caps->host.cpu || !caps->host.cpu->model)
|
const char *model = getenv("VIR_TEST_MOCK_FAKE_HOST_CPU");
|
||||||
return NULL;
|
|
||||||
|
|
||||||
return virCPUDefCopy(caps->host.cpu);
|
return testUtilsHostCpusGetDefForModel(model);
|
||||||
}
|
}
|
||||||
|
148
tests/testutilshostcpus.h
Normal file
148
tests/testutilshostcpus.h
Normal file
@ -0,0 +1,148 @@
|
|||||||
|
#include "conf/cpu_conf.h"
|
||||||
|
#include "internal.h"
|
||||||
|
#include "util/virarch.h"
|
||||||
|
|
||||||
|
static virCPUFeatureDef cpuDefaultFeatures[] = {
|
||||||
|
{ (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 = {
|
||||||
|
.type = VIR_CPU_TYPE_HOST,
|
||||||
|
.arch = VIR_ARCH_X86_64,
|
||||||
|
.model = (char *) "core2duo",
|
||||||
|
.vendor = (char *) "Intel",
|
||||||
|
.sockets = 1,
|
||||||
|
.cores = 2,
|
||||||
|
.threads = 1,
|
||||||
|
.nfeatures = ARRAY_CARDINALITY(cpuDefaultFeatures),
|
||||||
|
.nfeatures_max = ARRAY_CARDINALITY(cpuDefaultFeatures),
|
||||||
|
.features = cpuDefaultFeatures,
|
||||||
|
};
|
||||||
|
|
||||||
|
static virCPUFeatureDef cpuHaswellFeatures[] = {
|
||||||
|
{ (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 = {
|
||||||
|
.type = VIR_CPU_TYPE_HOST,
|
||||||
|
.arch = VIR_ARCH_X86_64,
|
||||||
|
.model = (char *) "Haswell",
|
||||||
|
.vendor = (char *) "Intel",
|
||||||
|
.sockets = 1,
|
||||||
|
.cores = 2,
|
||||||
|
.threads = 2,
|
||||||
|
.nfeatures = ARRAY_CARDINALITY(cpuHaswellFeatures),
|
||||||
|
.nfeatures_max = ARRAY_CARDINALITY(cpuHaswellFeatures),
|
||||||
|
.features = cpuHaswellFeatures,
|
||||||
|
};
|
||||||
|
|
||||||
|
static virCPUDef cpuBroadwellData = {
|
||||||
|
.type = VIR_CPU_TYPE_HOST,
|
||||||
|
.arch = VIR_ARCH_X86_64,
|
||||||
|
.model = (char *) "Broadwell",
|
||||||
|
.sockets = 1,
|
||||||
|
.cores = 2,
|
||||||
|
.threads = 2,
|
||||||
|
};
|
||||||
|
|
||||||
|
static virCPUDef cpuPower8Data = {
|
||||||
|
.type = VIR_CPU_TYPE_HOST,
|
||||||
|
.arch = VIR_ARCH_PPC64,
|
||||||
|
.model = (char *) "POWER8",
|
||||||
|
.sockets = 1,
|
||||||
|
.cores = 8,
|
||||||
|
.threads = 8,
|
||||||
|
};
|
||||||
|
|
||||||
|
static virCPUDef cpuPower9Data = {
|
||||||
|
.type = VIR_CPU_TYPE_HOST,
|
||||||
|
.arch = VIR_ARCH_PPC64,
|
||||||
|
.model = (char *) "POWER9",
|
||||||
|
.sockets = 1,
|
||||||
|
.cores = 16,
|
||||||
|
.threads = 1,
|
||||||
|
};
|
||||||
|
|
||||||
|
static virCPUDef cpuAarch64Data = {
|
||||||
|
.type = VIR_CPU_TYPE_HOST,
|
||||||
|
.arch = VIR_ARCH_AARCH64,
|
||||||
|
.sockets = 1,
|
||||||
|
.cores = 4,
|
||||||
|
.threads = 1,
|
||||||
|
};
|
||||||
|
|
||||||
|
static virCPUDef cpuS390Data = {
|
||||||
|
.type = VIR_CPU_TYPE_HOST,
|
||||||
|
.arch = VIR_ARCH_S390X,
|
||||||
|
.sockets = 2,
|
||||||
|
.cores = 1,
|
||||||
|
.threads = 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 == VIR_ARCH_AARCH64)
|
||||||
|
return virCPUDefCopy(&cpuAarch64Data);
|
||||||
|
|
||||||
|
return NULL;
|
||||||
|
}
|
@ -3,6 +3,7 @@
|
|||||||
# include <stdlib.h>
|
# include <stdlib.h>
|
||||||
|
|
||||||
# include "testutilsqemu.h"
|
# include "testutilsqemu.h"
|
||||||
|
# include "testutilshostcpus.h"
|
||||||
# include "testutils.h"
|
# include "testutils.h"
|
||||||
# include "viralloc.h"
|
# include "viralloc.h"
|
||||||
# include "cpu_conf.h"
|
# include "cpu_conf.h"
|
||||||
@ -19,91 +20,6 @@ virCPUDefPtr cpuHaswell;
|
|||||||
virCPUDefPtr cpuPower8;
|
virCPUDefPtr cpuPower8;
|
||||||
virCPUDefPtr cpuPower9;
|
virCPUDefPtr cpuPower9;
|
||||||
|
|
||||||
static virCPUFeatureDef cpuDefaultFeatures[] = {
|
|
||||||
{ (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 = {
|
|
||||||
.type = VIR_CPU_TYPE_HOST,
|
|
||||||
.arch = VIR_ARCH_X86_64,
|
|
||||||
.model = (char *) "core2duo",
|
|
||||||
.vendor = (char *) "Intel",
|
|
||||||
.sockets = 1,
|
|
||||||
.cores = 2,
|
|
||||||
.threads = 1,
|
|
||||||
.nfeatures = ARRAY_CARDINALITY(cpuDefaultFeatures),
|
|
||||||
.nfeatures_max = ARRAY_CARDINALITY(cpuDefaultFeatures),
|
|
||||||
.features = cpuDefaultFeatures,
|
|
||||||
};
|
|
||||||
|
|
||||||
static virCPUFeatureDef cpuHaswellFeatures[] = {
|
|
||||||
{ (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 = {
|
|
||||||
.type = VIR_CPU_TYPE_HOST,
|
|
||||||
.arch = VIR_ARCH_X86_64,
|
|
||||||
.model = (char *) "Haswell",
|
|
||||||
.vendor = (char *) "Intel",
|
|
||||||
.sockets = 1,
|
|
||||||
.cores = 2,
|
|
||||||
.threads = 2,
|
|
||||||
.nfeatures = ARRAY_CARDINALITY(cpuHaswellFeatures),
|
|
||||||
.nfeatures_max = ARRAY_CARDINALITY(cpuHaswellFeatures),
|
|
||||||
.features = cpuHaswellFeatures,
|
|
||||||
};
|
|
||||||
|
|
||||||
static virCPUDef cpuPower8Data = {
|
|
||||||
.type = VIR_CPU_TYPE_HOST,
|
|
||||||
.arch = VIR_ARCH_PPC64,
|
|
||||||
.model = (char *) "POWER8",
|
|
||||||
.sockets = 1,
|
|
||||||
.cores = 8,
|
|
||||||
.threads = 8,
|
|
||||||
};
|
|
||||||
|
|
||||||
static virCPUDef cpuPower9Data = {
|
|
||||||
.type = VIR_CPU_TYPE_HOST,
|
|
||||||
.arch = VIR_ARCH_PPC64,
|
|
||||||
.model = (char *) "POWER9",
|
|
||||||
.sockets = 1,
|
|
||||||
.cores = 16,
|
|
||||||
.threads = 1,
|
|
||||||
};
|
|
||||||
|
|
||||||
typedef enum {
|
typedef enum {
|
||||||
TEST_UTILS_QEMU_BIN_I686,
|
TEST_UTILS_QEMU_BIN_I686,
|
||||||
TEST_UTILS_QEMU_BIN_X86_64,
|
TEST_UTILS_QEMU_BIN_X86_64,
|
||||||
@ -557,8 +473,13 @@ qemuTestSetHostCPU(virCapsPtr caps,
|
|||||||
cpu = cpuPower8;
|
cpu = cpuPower8;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (cpu)
|
if (cpu) {
|
||||||
caps->host.arch = cpu->arch;
|
caps->host.arch = 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 = cpu;
|
caps->host.cpu = cpu;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -4,36 +4,9 @@
|
|||||||
#include <stdlib.h>
|
#include <stdlib.h>
|
||||||
|
|
||||||
#include "testutilsxen.h"
|
#include "testutilsxen.h"
|
||||||
|
#include "testutilshostcpus.h"
|
||||||
#include "domain_conf.h"
|
#include "domain_conf.h"
|
||||||
|
|
||||||
static virCPUFeatureDef cpuDefaultFeatures[] = {
|
|
||||||
{ (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 = {
|
|
||||||
.type = VIR_CPU_TYPE_HOST,
|
|
||||||
.arch = VIR_ARCH_X86_64,
|
|
||||||
.model = (char *) "core2duo",
|
|
||||||
.vendor = (char *) "Intel",
|
|
||||||
.sockets = 1,
|
|
||||||
.cores = 2,
|
|
||||||
.threads = 1,
|
|
||||||
.nfeatures = ARRAY_CARDINALITY(cpuDefaultFeatures),
|
|
||||||
.nfeatures_max = ARRAY_CARDINALITY(cpuDefaultFeatures),
|
|
||||||
.features = cpuDefaultFeatures,
|
|
||||||
};
|
|
||||||
|
|
||||||
virCapsPtr testXenCapsInit(void)
|
virCapsPtr testXenCapsInit(void)
|
||||||
{
|
{
|
||||||
struct utsname utsname;
|
struct utsname utsname;
|
||||||
|
Loading…
Reference in New Issue
Block a user