mirror of
https://gitlab.com/libvirt/libvirt.git
synced 2025-02-02 13:47:13 +03:00
tests: hotplug: Add test infrastructure for testing qemu CPU hotplug code
The cpu hotplug operation is rather complex so the testing code needs to provide quite lot of data and monitor conversations to successfully test it. The code mainly tests the selection of cpus according to the target count request.
This commit is contained in:
parent
7fb2639bfc
commit
a245abce43
@ -347,11 +347,187 @@ testQemuHotplug(const void *data)
|
|||||||
return ((ret < 0 && fail) || (!ret && !fail)) ? 0 : -1;
|
return ((ret < 0 && fail) || (!ret && !fail)) ? 0 : -1;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
struct testQemuHotplugCpuData {
|
||||||
|
char *file_xml_dom;
|
||||||
|
char *file_xml_res_live;
|
||||||
|
char *file_xml_res_conf;
|
||||||
|
char *file_json_monitor;
|
||||||
|
|
||||||
|
char *xml_dom;
|
||||||
|
|
||||||
|
virDomainObjPtr vm;
|
||||||
|
qemuMonitorTestPtr mon;
|
||||||
|
bool modern;
|
||||||
|
};
|
||||||
|
|
||||||
|
|
||||||
|
static void
|
||||||
|
testQemuHotplugCpuDataFree(struct testQemuHotplugCpuData *data)
|
||||||
|
{
|
||||||
|
if (!data)
|
||||||
|
return;
|
||||||
|
|
||||||
|
VIR_FREE(data->file_xml_dom);
|
||||||
|
VIR_FREE(data->file_xml_res_live);
|
||||||
|
VIR_FREE(data->file_xml_res_conf);
|
||||||
|
VIR_FREE(data->file_json_monitor);
|
||||||
|
|
||||||
|
VIR_FREE(data->xml_dom);
|
||||||
|
|
||||||
|
virObjectUnref(data->vm);
|
||||||
|
qemuMonitorTestFree(data->mon);
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
static struct testQemuHotplugCpuData *
|
||||||
|
testQemuHotplugCpuPrepare(const char *test,
|
||||||
|
bool modern)
|
||||||
|
{
|
||||||
|
qemuDomainObjPrivatePtr priv = NULL;
|
||||||
|
virCapsPtr caps = NULL;
|
||||||
|
char *prefix = NULL;
|
||||||
|
struct testQemuHotplugCpuData *data = NULL;
|
||||||
|
|
||||||
|
if (virAsprintf(&prefix, "%s/qemuhotplugtestcpus/%s", abs_srcdir, test) < 0)
|
||||||
|
return NULL;
|
||||||
|
|
||||||
|
if (VIR_ALLOC(data) < 0)
|
||||||
|
goto error;
|
||||||
|
|
||||||
|
data->modern = modern;
|
||||||
|
|
||||||
|
if (virAsprintf(&data->file_xml_dom, "%s-domain.xml", prefix) < 0 ||
|
||||||
|
virAsprintf(&data->file_xml_res_live, "%s-result-live.xml", prefix) < 0 ||
|
||||||
|
virAsprintf(&data->file_xml_res_conf, "%s-result-conf.xml", prefix) < 0 ||
|
||||||
|
virAsprintf(&data->file_json_monitor, "%s-monitor.json", prefix) < 0)
|
||||||
|
goto error;
|
||||||
|
|
||||||
|
if (virTestLoadFile(data->file_xml_dom, &data->xml_dom) < 0)
|
||||||
|
goto error;
|
||||||
|
|
||||||
|
if (qemuHotplugCreateObjects(driver.xmlopt, &data->vm, data->xml_dom, true,
|
||||||
|
"cpu-hotplug-test-domain") < 0)
|
||||||
|
goto error;
|
||||||
|
|
||||||
|
if (!(caps = virQEMUDriverGetCapabilities(&driver, false)))
|
||||||
|
goto error;
|
||||||
|
|
||||||
|
/* create vm->newDef */
|
||||||
|
data->vm->persistent = true;
|
||||||
|
if (virDomainObjSetDefTransient(caps, driver.xmlopt, data->vm) < 0)
|
||||||
|
goto error;
|
||||||
|
|
||||||
|
priv = data->vm->privateData;
|
||||||
|
|
||||||
|
if (data->modern)
|
||||||
|
virQEMUCapsSet(priv->qemuCaps, QEMU_CAPS_QUERY_HOTPLUGGABLE_CPUS);
|
||||||
|
|
||||||
|
if (!(data->mon = qemuMonitorTestNewFromFileFull(data->file_json_monitor,
|
||||||
|
&driver, data->vm)))
|
||||||
|
goto error;
|
||||||
|
|
||||||
|
priv->mon = qemuMonitorTestGetMonitor(data->mon);
|
||||||
|
priv->monJSON = true;
|
||||||
|
virObjectUnlock(priv->mon);
|
||||||
|
|
||||||
|
if (qemuDomainRefreshVcpuInfo(&driver, data->vm, 0, false) < 0)
|
||||||
|
goto error;
|
||||||
|
|
||||||
|
return data;
|
||||||
|
|
||||||
|
error:
|
||||||
|
virObjectUnref(caps);
|
||||||
|
testQemuHotplugCpuDataFree(data);
|
||||||
|
VIR_FREE(prefix);
|
||||||
|
return NULL;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
static int
|
||||||
|
testQemuHotplugCpuFinalize(struct testQemuHotplugCpuData *data)
|
||||||
|
{
|
||||||
|
int ret = -1;
|
||||||
|
char *activeXML = NULL;
|
||||||
|
char *configXML = NULL;
|
||||||
|
|
||||||
|
if (data->file_xml_res_live) {
|
||||||
|
if (!(activeXML = virDomainDefFormat(data->vm->def, driver.caps,
|
||||||
|
VIR_DOMAIN_DEF_FORMAT_SECURE)))
|
||||||
|
goto cleanup;
|
||||||
|
|
||||||
|
if (virTestCompareToFile(activeXML, data->file_xml_res_live) < 0)
|
||||||
|
goto cleanup;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (data->file_xml_res_conf) {
|
||||||
|
if (!(configXML = virDomainDefFormat(data->vm->newDef, driver.caps,
|
||||||
|
VIR_DOMAIN_DEF_FORMAT_SECURE |
|
||||||
|
VIR_DOMAIN_DEF_FORMAT_INACTIVE)))
|
||||||
|
goto cleanup;
|
||||||
|
|
||||||
|
if (virTestCompareToFile(configXML, data->file_xml_res_conf) < 0)
|
||||||
|
goto cleanup;
|
||||||
|
}
|
||||||
|
|
||||||
|
ret = 0;
|
||||||
|
|
||||||
|
cleanup:
|
||||||
|
VIR_FREE(activeXML);
|
||||||
|
VIR_FREE(configXML);
|
||||||
|
return ret;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
struct testQemuHotplugCpuParams {
|
||||||
|
const char *test;
|
||||||
|
int newcpus;
|
||||||
|
bool modern;
|
||||||
|
bool fail;
|
||||||
|
};
|
||||||
|
|
||||||
|
|
||||||
|
static int
|
||||||
|
testQemuHotplugCpuGroup(const void *opaque)
|
||||||
|
{
|
||||||
|
const struct testQemuHotplugCpuParams *params = opaque;
|
||||||
|
struct testQemuHotplugCpuData *data = NULL;
|
||||||
|
int ret = -1;
|
||||||
|
int rc;
|
||||||
|
|
||||||
|
if (!(data = testQemuHotplugCpuPrepare(params->test, params->modern)))
|
||||||
|
return -1;
|
||||||
|
|
||||||
|
rc = qemuDomainSetVcpusInternal(&driver, data->vm, data->vm->def,
|
||||||
|
data->vm->newDef, params->newcpus,
|
||||||
|
params->modern);
|
||||||
|
|
||||||
|
if (params->fail) {
|
||||||
|
if (rc == 0)
|
||||||
|
fprintf(stderr, "cpu test '%s' should have failed\n", params->test);
|
||||||
|
else
|
||||||
|
ret = 0;
|
||||||
|
|
||||||
|
goto cleanup;
|
||||||
|
} else {
|
||||||
|
if (rc < 0)
|
||||||
|
goto cleanup;
|
||||||
|
}
|
||||||
|
|
||||||
|
ret = testQemuHotplugCpuFinalize(data);
|
||||||
|
|
||||||
|
cleanup:
|
||||||
|
testQemuHotplugCpuDataFree(data);
|
||||||
|
return ret;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
static int
|
static int
|
||||||
mymain(void)
|
mymain(void)
|
||||||
{
|
{
|
||||||
int ret = 0;
|
int ret = 0;
|
||||||
struct qemuHotplugTestData data = {0};
|
struct qemuHotplugTestData data = {0};
|
||||||
|
struct testQemuHotplugCpuParams cpudata;
|
||||||
|
|
||||||
#if !WITH_YAJL
|
#if !WITH_YAJL
|
||||||
fputs("libvirt not compiled with yajl, skipping this test\n", stderr);
|
fputs("libvirt not compiled with yajl, skipping this test\n", stderr);
|
||||||
@ -584,6 +760,19 @@ mymain(void)
|
|||||||
"device_del", QMP_OK,
|
"device_del", QMP_OK,
|
||||||
"object-del", QMP_OK);
|
"object-del", QMP_OK);
|
||||||
|
|
||||||
|
#define DO_TEST_CPU_GROUP(prefix, vcpus, modernhp, expectfail) \
|
||||||
|
do { \
|
||||||
|
cpudata.test = prefix; \
|
||||||
|
cpudata.newcpus = vcpus; \
|
||||||
|
cpudata.modern = modernhp; \
|
||||||
|
cpudata.fail = expectfail; \
|
||||||
|
if (virTestRun("hotplug vcpus group " prefix, \
|
||||||
|
testQemuHotplugCpuGroup, &cpudata) < 0) \
|
||||||
|
ret = -1; \
|
||||||
|
} while (0)
|
||||||
|
|
||||||
|
DO_TEST_CPU_GROUP("x86-modern-bulk", 7, true, false);
|
||||||
|
|
||||||
qemuTestDriverFree(&driver);
|
qemuTestDriverFree(&driver);
|
||||||
return (ret == 0) ? EXIT_SUCCESS : EXIT_FAILURE;
|
return (ret == 0) ? EXIT_SUCCESS : EXIT_FAILURE;
|
||||||
}
|
}
|
||||||
|
21
tests/qemuhotplugtestcpus/x86-modern-bulk-domain.xml
Normal file
21
tests/qemuhotplugtestcpus/x86-modern-bulk-domain.xml
Normal file
@ -0,0 +1,21 @@
|
|||||||
|
<domain type='qemu'>
|
||||||
|
<name>QEMUGuest1</name>
|
||||||
|
<uuid>c7a5fdbd-edaf-9455-926a-d65c16db1809</uuid>
|
||||||
|
<memory unit='KiB'>219100</memory>
|
||||||
|
<currentMemory unit='KiB'>219100</currentMemory>
|
||||||
|
<vcpu placement='static' current='5'>8</vcpu>
|
||||||
|
<os>
|
||||||
|
<type arch='x86_64' machine='pc'>hvm</type>
|
||||||
|
<boot dev='network'/>
|
||||||
|
</os>
|
||||||
|
<cpu>
|
||||||
|
<topology sockets="4" cores="2" threads="1"/>
|
||||||
|
</cpu>
|
||||||
|
<clock offset='utc'/>
|
||||||
|
<on_poweroff>destroy</on_poweroff>
|
||||||
|
<on_reboot>restart</on_reboot>
|
||||||
|
<on_crash>destroy</on_crash>
|
||||||
|
<devices>
|
||||||
|
<emulator>/usr/bin/qemu</emulator>
|
||||||
|
</devices>
|
||||||
|
</domain>
|
471
tests/qemuhotplugtestcpus/x86-modern-bulk-monitor.json
Normal file
471
tests/qemuhotplugtestcpus/x86-modern-bulk-monitor.json
Normal file
@ -0,0 +1,471 @@
|
|||||||
|
{"execute":"query-hotpluggable-cpus","id":"libvirt-1"}
|
||||||
|
|
||||||
|
{
|
||||||
|
"return": [
|
||||||
|
{
|
||||||
|
"props": {
|
||||||
|
"core-id": 1,
|
||||||
|
"thread-id": 1,
|
||||||
|
"socket-id": 1
|
||||||
|
},
|
||||||
|
"vcpus-count": 1,
|
||||||
|
"type": "qemu64-x86_64-cpu"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"props": {
|
||||||
|
"core-id": 1,
|
||||||
|
"thread-id": 0,
|
||||||
|
"socket-id": 1
|
||||||
|
},
|
||||||
|
"vcpus-count": 1,
|
||||||
|
"type": "qemu64-x86_64-cpu"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"props": {
|
||||||
|
"core-id": 0,
|
||||||
|
"thread-id": 1,
|
||||||
|
"socket-id": 1
|
||||||
|
},
|
||||||
|
"vcpus-count": 1,
|
||||||
|
"type": "qemu64-x86_64-cpu"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"props": {
|
||||||
|
"core-id": 0,
|
||||||
|
"thread-id": 0,
|
||||||
|
"socket-id": 1
|
||||||
|
},
|
||||||
|
"vcpus-count": 1,
|
||||||
|
"qom-path": "/machine/unattached/device[5]",
|
||||||
|
"type": "qemu64-x86_64-cpu"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"props": {
|
||||||
|
"core-id": 1,
|
||||||
|
"thread-id": 1,
|
||||||
|
"socket-id": 0
|
||||||
|
},
|
||||||
|
"vcpus-count": 1,
|
||||||
|
"qom-path": "/machine/unattached/device[4]",
|
||||||
|
"type": "qemu64-x86_64-cpu"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"props": {
|
||||||
|
"core-id": 1,
|
||||||
|
"thread-id": 0,
|
||||||
|
"socket-id": 0
|
||||||
|
},
|
||||||
|
"vcpus-count": 1,
|
||||||
|
"qom-path": "/machine/unattached/device[3]",
|
||||||
|
"type": "qemu64-x86_64-cpu"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"props": {
|
||||||
|
"core-id": 0,
|
||||||
|
"thread-id": 1,
|
||||||
|
"socket-id": 0
|
||||||
|
},
|
||||||
|
"vcpus-count": 1,
|
||||||
|
"qom-path": "/machine/unattached/device[2]",
|
||||||
|
"type": "qemu64-x86_64-cpu"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"props": {
|
||||||
|
"core-id": 0,
|
||||||
|
"thread-id": 0,
|
||||||
|
"socket-id": 0
|
||||||
|
},
|
||||||
|
"vcpus-count": 1,
|
||||||
|
"qom-path": "/machine/unattached/device[0]",
|
||||||
|
"type": "qemu64-x86_64-cpu"
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"id": "libvirt-23"
|
||||||
|
}
|
||||||
|
|
||||||
|
{"execute":"query-cpus","id":"libvirt-2"}
|
||||||
|
|
||||||
|
{
|
||||||
|
"return": [
|
||||||
|
{
|
||||||
|
"arch": "x86",
|
||||||
|
"current": true,
|
||||||
|
"CPU": 0,
|
||||||
|
"qom_path": "/machine/unattached/device[0]",
|
||||||
|
"pc": -2130415978,
|
||||||
|
"halted": true,
|
||||||
|
"thread_id": 518291
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"arch": "x86",
|
||||||
|
"current": false,
|
||||||
|
"CPU": 1,
|
||||||
|
"qom_path": "/machine/unattached/device[2]",
|
||||||
|
"pc": -2130415978,
|
||||||
|
"halted": true,
|
||||||
|
"thread_id": 518292
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"arch": "x86",
|
||||||
|
"current": false,
|
||||||
|
"CPU": 2,
|
||||||
|
"qom_path": "/machine/unattached/device[3]",
|
||||||
|
"pc": -2130415978,
|
||||||
|
"halted": true,
|
||||||
|
"thread_id": 518294
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"arch": "x86",
|
||||||
|
"current": false,
|
||||||
|
"CPU": 3,
|
||||||
|
"qom_path": "/machine/unattached/device[4]",
|
||||||
|
"pc": -2130415978,
|
||||||
|
"halted": true,
|
||||||
|
"thread_id": 518295
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"arch": "x86",
|
||||||
|
"current": false,
|
||||||
|
"CPU": 4,
|
||||||
|
"qom_path": "/machine/unattached/device[5]",
|
||||||
|
"pc": -2130415978,
|
||||||
|
"halted": true,
|
||||||
|
"thread_id": 518296
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"id": "libvirt-22"
|
||||||
|
}
|
||||||
|
|
||||||
|
{
|
||||||
|
"execute": "device_add",
|
||||||
|
"arguments": {
|
||||||
|
"driver": "qemu64-x86_64-cpu",
|
||||||
|
"id": "vcpu5",
|
||||||
|
"socket-id": 1,
|
||||||
|
"core-id": 0,
|
||||||
|
"thread-id": 1
|
||||||
|
},
|
||||||
|
"id": "libvirt-3"
|
||||||
|
}
|
||||||
|
|
||||||
|
{"return": {}}
|
||||||
|
|
||||||
|
{"execute":"query-hotpluggable-cpus","id":"libvirt-4"}
|
||||||
|
|
||||||
|
{
|
||||||
|
"return": [
|
||||||
|
{
|
||||||
|
"props": {
|
||||||
|
"core-id": 1,
|
||||||
|
"thread-id": 1,
|
||||||
|
"socket-id": 1
|
||||||
|
},
|
||||||
|
"vcpus-count": 1,
|
||||||
|
"type": "qemu64-x86_64-cpu"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"props": {
|
||||||
|
"core-id": 1,
|
||||||
|
"thread-id": 0,
|
||||||
|
"socket-id": 1
|
||||||
|
},
|
||||||
|
"vcpus-count": 1,
|
||||||
|
"type": "qemu64-x86_64-cpu"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"props": {
|
||||||
|
"core-id": 0,
|
||||||
|
"thread-id": 1,
|
||||||
|
"socket-id": 1
|
||||||
|
},
|
||||||
|
"vcpus-count": 1,
|
||||||
|
"qom-path": "/machine/peripheral/vcpu5",
|
||||||
|
"type": "qemu64-x86_64-cpu"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"props": {
|
||||||
|
"core-id": 0,
|
||||||
|
"thread-id": 0,
|
||||||
|
"socket-id": 1
|
||||||
|
},
|
||||||
|
"vcpus-count": 1,
|
||||||
|
"qom-path": "/machine/unattached/device[5]",
|
||||||
|
"type": "qemu64-x86_64-cpu"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"props": {
|
||||||
|
"core-id": 1,
|
||||||
|
"thread-id": 1,
|
||||||
|
"socket-id": 0
|
||||||
|
},
|
||||||
|
"vcpus-count": 1,
|
||||||
|
"qom-path": "/machine/unattached/device[4]",
|
||||||
|
"type": "qemu64-x86_64-cpu"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"props": {
|
||||||
|
"core-id": 1,
|
||||||
|
"thread-id": 0,
|
||||||
|
"socket-id": 0
|
||||||
|
},
|
||||||
|
"vcpus-count": 1,
|
||||||
|
"qom-path": "/machine/unattached/device[3]",
|
||||||
|
"type": "qemu64-x86_64-cpu"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"props": {
|
||||||
|
"core-id": 0,
|
||||||
|
"thread-id": 1,
|
||||||
|
"socket-id": 0
|
||||||
|
},
|
||||||
|
"vcpus-count": 1,
|
||||||
|
"qom-path": "/machine/unattached/device[2]",
|
||||||
|
"type": "qemu64-x86_64-cpu"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"props": {
|
||||||
|
"core-id": 0,
|
||||||
|
"thread-id": 0,
|
||||||
|
"socket-id": 0
|
||||||
|
},
|
||||||
|
"vcpus-count": 1,
|
||||||
|
"qom-path": "/machine/unattached/device[0]",
|
||||||
|
"type": "qemu64-x86_64-cpu"
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"id": "libvirt-23"
|
||||||
|
}
|
||||||
|
|
||||||
|
{"execute":"query-cpus","id":"libvirt-5"}
|
||||||
|
|
||||||
|
{
|
||||||
|
"return": [
|
||||||
|
{
|
||||||
|
"arch": "x86",
|
||||||
|
"current": true,
|
||||||
|
"CPU": 0,
|
||||||
|
"qom_path": "/machine/unattached/device[0]",
|
||||||
|
"pc": -2130415978,
|
||||||
|
"halted": true,
|
||||||
|
"thread_id": 518291
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"arch": "x86",
|
||||||
|
"current": false,
|
||||||
|
"CPU": 1,
|
||||||
|
"qom_path": "/machine/unattached/device[2]",
|
||||||
|
"pc": -2130415978,
|
||||||
|
"halted": true,
|
||||||
|
"thread_id": 518292
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"arch": "x86",
|
||||||
|
"current": false,
|
||||||
|
"CPU": 2,
|
||||||
|
"qom_path": "/machine/unattached/device[3]",
|
||||||
|
"pc": -2130415978,
|
||||||
|
"halted": true,
|
||||||
|
"thread_id": 518294
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"arch": "x86",
|
||||||
|
"current": false,
|
||||||
|
"CPU": 3,
|
||||||
|
"qom_path": "/machine/unattached/device[4]",
|
||||||
|
"pc": -2130415978,
|
||||||
|
"halted": true,
|
||||||
|
"thread_id": 518295
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"arch": "x86",
|
||||||
|
"current": false,
|
||||||
|
"CPU": 4,
|
||||||
|
"qom_path": "/machine/unattached/device[5]",
|
||||||
|
"pc": -2130415978,
|
||||||
|
"halted": true,
|
||||||
|
"thread_id": 518296
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"arch": "x86",
|
||||||
|
"current": false,
|
||||||
|
"CPU": 5,
|
||||||
|
"qom_path": "/machine/peripheral/vcpu5",
|
||||||
|
"pc": -2130415978,
|
||||||
|
"halted": true,
|
||||||
|
"thread_id": 518297
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"id": "libvirt-22"
|
||||||
|
}
|
||||||
|
|
||||||
|
{
|
||||||
|
"execute": "device_add",
|
||||||
|
"arguments": {
|
||||||
|
"driver": "qemu64-x86_64-cpu",
|
||||||
|
"id": "vcpu6",
|
||||||
|
"socket-id": 1,
|
||||||
|
"core-id": 1,
|
||||||
|
"thread-id": 0
|
||||||
|
},
|
||||||
|
"id": "libvirt-6"
|
||||||
|
}
|
||||||
|
|
||||||
|
{"return": {}}
|
||||||
|
|
||||||
|
{"execute":"query-hotpluggable-cpus","id":"libvirt-7"}
|
||||||
|
|
||||||
|
{
|
||||||
|
"return": [
|
||||||
|
{
|
||||||
|
"props": {
|
||||||
|
"core-id": 1,
|
||||||
|
"thread-id": 1,
|
||||||
|
"socket-id": 1
|
||||||
|
},
|
||||||
|
"vcpus-count": 1,
|
||||||
|
"type": "qemu64-x86_64-cpu"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"props": {
|
||||||
|
"core-id": 1,
|
||||||
|
"thread-id": 0,
|
||||||
|
"socket-id": 1
|
||||||
|
},
|
||||||
|
"vcpus-count": 1,
|
||||||
|
"qom-path": "/machine/peripheral/vcpu6",
|
||||||
|
"type": "qemu64-x86_64-cpu"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"props": {
|
||||||
|
"core-id": 0,
|
||||||
|
"thread-id": 1,
|
||||||
|
"socket-id": 1
|
||||||
|
},
|
||||||
|
"vcpus-count": 1,
|
||||||
|
"qom-path": "/machine/peripheral/vcpu5",
|
||||||
|
"type": "qemu64-x86_64-cpu"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"props": {
|
||||||
|
"core-id": 0,
|
||||||
|
"thread-id": 0,
|
||||||
|
"socket-id": 1
|
||||||
|
},
|
||||||
|
"vcpus-count": 1,
|
||||||
|
"qom-path": "/machine/unattached/device[5]",
|
||||||
|
"type": "qemu64-x86_64-cpu"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"props": {
|
||||||
|
"core-id": 1,
|
||||||
|
"thread-id": 1,
|
||||||
|
"socket-id": 0
|
||||||
|
},
|
||||||
|
"vcpus-count": 1,
|
||||||
|
"qom-path": "/machine/unattached/device[4]",
|
||||||
|
"type": "qemu64-x86_64-cpu"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"props": {
|
||||||
|
"core-id": 1,
|
||||||
|
"thread-id": 0,
|
||||||
|
"socket-id": 0
|
||||||
|
},
|
||||||
|
"vcpus-count": 1,
|
||||||
|
"qom-path": "/machine/unattached/device[3]",
|
||||||
|
"type": "qemu64-x86_64-cpu"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"props": {
|
||||||
|
"core-id": 0,
|
||||||
|
"thread-id": 1,
|
||||||
|
"socket-id": 0
|
||||||
|
},
|
||||||
|
"vcpus-count": 1,
|
||||||
|
"qom-path": "/machine/unattached/device[2]",
|
||||||
|
"type": "qemu64-x86_64-cpu"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"props": {
|
||||||
|
"core-id": 0,
|
||||||
|
"thread-id": 0,
|
||||||
|
"socket-id": 0
|
||||||
|
},
|
||||||
|
"vcpus-count": 1,
|
||||||
|
"qom-path": "/machine/unattached/device[0]",
|
||||||
|
"type": "qemu64-x86_64-cpu"
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"id": "libvirt-23"
|
||||||
|
}
|
||||||
|
|
||||||
|
{"execute":"query-cpus","id":"libvirt-8"}
|
||||||
|
|
||||||
|
{
|
||||||
|
"return": [
|
||||||
|
{
|
||||||
|
"arch": "x86",
|
||||||
|
"current": true,
|
||||||
|
"CPU": 0,
|
||||||
|
"qom_path": "/machine/unattached/device[0]",
|
||||||
|
"pc": -2130415978,
|
||||||
|
"halted": true,
|
||||||
|
"thread_id": 518291
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"arch": "x86",
|
||||||
|
"current": false,
|
||||||
|
"CPU": 1,
|
||||||
|
"qom_path": "/machine/unattached/device[2]",
|
||||||
|
"pc": -2130415978,
|
||||||
|
"halted": true,
|
||||||
|
"thread_id": 518292
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"arch": "x86",
|
||||||
|
"current": false,
|
||||||
|
"CPU": 2,
|
||||||
|
"qom_path": "/machine/unattached/device[3]",
|
||||||
|
"pc": -2130415978,
|
||||||
|
"halted": true,
|
||||||
|
"thread_id": 518294
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"arch": "x86",
|
||||||
|
"current": false,
|
||||||
|
"CPU": 3,
|
||||||
|
"qom_path": "/machine/unattached/device[4]",
|
||||||
|
"pc": -2130415978,
|
||||||
|
"halted": true,
|
||||||
|
"thread_id": 518295
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"arch": "x86",
|
||||||
|
"current": false,
|
||||||
|
"CPU": 4,
|
||||||
|
"qom_path": "/machine/unattached/device[5]",
|
||||||
|
"pc": -2130415978,
|
||||||
|
"halted": true,
|
||||||
|
"thread_id": 518296
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"arch": "x86",
|
||||||
|
"current": false,
|
||||||
|
"CPU": 5,
|
||||||
|
"qom_path": "/machine/peripheral/vcpu5",
|
||||||
|
"pc": -2130415978,
|
||||||
|
"halted": true,
|
||||||
|
"thread_id": 518297
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"arch": "x86",
|
||||||
|
"current": false,
|
||||||
|
"CPU": 6,
|
||||||
|
"qom_path": "/machine/peripheral/vcpu6",
|
||||||
|
"pc": -2130415978,
|
||||||
|
"halted": true,
|
||||||
|
"thread_id": 518298
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"id": "libvirt-22"
|
||||||
|
}
|
40
tests/qemuhotplugtestcpus/x86-modern-bulk-result-conf.xml
Normal file
40
tests/qemuhotplugtestcpus/x86-modern-bulk-result-conf.xml
Normal file
@ -0,0 +1,40 @@
|
|||||||
|
<domain type='qemu'>
|
||||||
|
<name>QEMUGuest1</name>
|
||||||
|
<uuid>c7a5fdbd-edaf-9455-926a-d65c16db1809</uuid>
|
||||||
|
<memory unit='KiB'>219100</memory>
|
||||||
|
<currentMemory unit='KiB'>219100</currentMemory>
|
||||||
|
<vcpu placement='static' current='7'>8</vcpu>
|
||||||
|
<vcpus>
|
||||||
|
<vcpu id='0' enabled='yes' hotpluggable='no'/>
|
||||||
|
<vcpu id='1' enabled='yes' hotpluggable='no'/>
|
||||||
|
<vcpu id='2' enabled='yes' hotpluggable='no'/>
|
||||||
|
<vcpu id='3' enabled='yes' hotpluggable='no'/>
|
||||||
|
<vcpu id='4' enabled='yes' hotpluggable='no'/>
|
||||||
|
<vcpu id='5' enabled='yes' hotpluggable='yes'/>
|
||||||
|
<vcpu id='6' enabled='yes' hotpluggable='yes'/>
|
||||||
|
<vcpu id='7' enabled='no' hotpluggable='yes'/>
|
||||||
|
</vcpus>
|
||||||
|
<os>
|
||||||
|
<type arch='x86_64' machine='pc'>hvm</type>
|
||||||
|
<boot dev='network'/>
|
||||||
|
</os>
|
||||||
|
<cpu>
|
||||||
|
<topology sockets='4' cores='2' threads='1'/>
|
||||||
|
</cpu>
|
||||||
|
<clock offset='utc'/>
|
||||||
|
<on_poweroff>destroy</on_poweroff>
|
||||||
|
<on_reboot>restart</on_reboot>
|
||||||
|
<on_crash>destroy</on_crash>
|
||||||
|
<devices>
|
||||||
|
<emulator>/usr/bin/qemu</emulator>
|
||||||
|
<controller type='usb' index='0'>
|
||||||
|
<address type='pci' domain='0x0000' bus='0x00' slot='0x01' function='0x2'/>
|
||||||
|
</controller>
|
||||||
|
<controller type='pci' index='0' model='pci-root'/>
|
||||||
|
<input type='mouse' bus='ps2'/>
|
||||||
|
<input type='keyboard' bus='ps2'/>
|
||||||
|
<memballoon model='virtio'>
|
||||||
|
<address type='pci' domain='0x0000' bus='0x00' slot='0x03' function='0x0'/>
|
||||||
|
</memballoon>
|
||||||
|
</devices>
|
||||||
|
</domain>
|
48
tests/qemuhotplugtestcpus/x86-modern-bulk-result-live.xml
Normal file
48
tests/qemuhotplugtestcpus/x86-modern-bulk-result-live.xml
Normal file
@ -0,0 +1,48 @@
|
|||||||
|
<domain type='qemu' id='7'>
|
||||||
|
<name>QEMUGuest1</name>
|
||||||
|
<uuid>c7a5fdbd-edaf-9455-926a-d65c16db1809</uuid>
|
||||||
|
<memory unit='KiB'>219100</memory>
|
||||||
|
<currentMemory unit='KiB'>219100</currentMemory>
|
||||||
|
<vcpu placement='static' current='7'>8</vcpu>
|
||||||
|
<vcpus>
|
||||||
|
<vcpu id='0' enabled='yes' hotpluggable='no' order='1'/>
|
||||||
|
<vcpu id='1' enabled='yes' hotpluggable='no' order='2'/>
|
||||||
|
<vcpu id='2' enabled='yes' hotpluggable='no' order='3'/>
|
||||||
|
<vcpu id='3' enabled='yes' hotpluggable='no' order='4'/>
|
||||||
|
<vcpu id='4' enabled='yes' hotpluggable='no' order='5'/>
|
||||||
|
<vcpu id='5' enabled='yes' hotpluggable='yes' order='6'/>
|
||||||
|
<vcpu id='6' enabled='yes' hotpluggable='yes' order='7'/>
|
||||||
|
<vcpu id='7' enabled='no' hotpluggable='yes'/>
|
||||||
|
</vcpus>
|
||||||
|
<os>
|
||||||
|
<type arch='x86_64' machine='pc'>hvm</type>
|
||||||
|
<boot dev='network'/>
|
||||||
|
</os>
|
||||||
|
<cpu>
|
||||||
|
<topology sockets='4' cores='2' threads='1'/>
|
||||||
|
</cpu>
|
||||||
|
<clock offset='utc'/>
|
||||||
|
<on_poweroff>destroy</on_poweroff>
|
||||||
|
<on_reboot>restart</on_reboot>
|
||||||
|
<on_crash>destroy</on_crash>
|
||||||
|
<devices>
|
||||||
|
<emulator>/usr/bin/qemu</emulator>
|
||||||
|
<controller type='usb' index='0'>
|
||||||
|
<alias name='usb'/>
|
||||||
|
<address type='pci' domain='0x0000' bus='0x00' slot='0x01' function='0x2'/>
|
||||||
|
</controller>
|
||||||
|
<controller type='pci' index='0' model='pci-root'>
|
||||||
|
<alias name='pci'/>
|
||||||
|
</controller>
|
||||||
|
<input type='mouse' bus='ps2'>
|
||||||
|
<alias name='input0'/>
|
||||||
|
</input>
|
||||||
|
<input type='keyboard' bus='ps2'>
|
||||||
|
<alias name='input1'/>
|
||||||
|
</input>
|
||||||
|
<memballoon model='virtio'>
|
||||||
|
<alias name='balloon0'/>
|
||||||
|
<address type='pci' domain='0x0000' bus='0x00' slot='0x03' function='0x0'/>
|
||||||
|
</memballoon>
|
||||||
|
</devices>
|
||||||
|
</domain>
|
Loading…
x
Reference in New Issue
Block a user