提交 69dde2e6 编写于 作者: M Michael Ellerman 提交者: Eric Blake

tests: Teach qemuxml2argvtest about spapr-vio addresses

We can't call qemuCapsExtractVersionInfo() from test code, because it
expects to be able to call the emulator, and for testing we have fake
emulators that can't be executed. For that reason qemuxml2argvtest.c
doesn't call qemuDomainAssignPCIAddresses(), instead it open codes its
own version.

That means we can't call qemuDomainAssignAddresses() from the test code,
instead we need to manually call qemuDomainAssignSpaprVioAddresses().

Also add logic to cope with qemuDomainAssignSpaprVioAddresses() failing,
so that we can write a test that checks for a known failure in there.
Signed-off-by: NMichael Ellerman <michael@ellerman.id.au>
上级 8611d9c3
......@@ -735,7 +735,7 @@ qemuAssignSpaprVIOAddress(virDomainDefPtr def, virDomainDeviceInfoPtr info,
return 0;
}
static int qemuDomainAssignSpaprVIOAddresses(virDomainDefPtr def)
int qemuDomainAssignSpaprVIOAddresses(virDomainDefPtr def)
{
int i, rc;
......
......@@ -175,6 +175,7 @@ virDomainDefPtr qemuParseCommandLinePid(virCapsPtr caps,
bool *monJSON);
int qemuDomainAssignAddresses(virDomainDefPtr def);
int qemuDomainAssignSpaprVIOAddresses(virDomainDefPtr def);
int qemuDomainAssignPCIAddresses(virDomainDefPtr def);
qemuDomainPCIAddressSetPtr qemuDomainPCIAddressSetCreate(virDomainDefPtr def);
......
......@@ -153,6 +153,13 @@ static int testCompareXMLToArgvFiles(const char *xml,
if (qemuCapsGet(extraFlags, QEMU_CAPS_DEVICE)) {
qemuDomainPCIAddressSetPtr pciaddrs;
if (qemuDomainAssignSpaprVIOAddresses(vmdef)) {
if (expectError)
goto ok;
goto fail;
}
if (!(pciaddrs = qemuDomainPCIAddressSetCreate(vmdef)))
goto fail;
......@@ -190,11 +197,6 @@ static int testCompareXMLToArgvFiles(const char *xml,
goto fail;
}
if (expectError) {
/* need to suppress the errors */
virResetLastError();
}
if (!(actualargv = virCommandToString(cmd)))
goto fail;
......@@ -212,6 +214,12 @@ static int testCompareXMLToArgvFiles(const char *xml,
goto fail;
}
ok:
if (expectError) {
/* need to suppress the errors */
virResetLastError();
}
ret = 0;
fail:
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册