[libvirt] [PATCH v2 5/6] tests: qemuxml2xml: assign device addresses
Cole Robinson
crobinso at redhat.com
Tue Feb 9 21:15:06 UTC 2016
On 02/09/2016 03:11 PM, Laine Stump wrote:
> On 02/09/2016 10:59 AM, Cole Robinson wrote:
>> We use the PreFormat callback for this. Many test cases need to be extended
>> to pass in proper qemuCaps flags so AssignAddresses doesn't throw errors.
>>
>> One test case (pcie-root-port-too-many) is dropped, since it was meant
>> only for checking an error condition in qemuxml2argv, and one we add in
>> AssignAddresses it errors here too.
>>
>> Long term I think AssignAddresses should be handled in qemu's PostParse
>> callback, but that's not entirely straightforward. Handling it here
>> means we can get the test suite churn over with.
>> ---
>
> I'm too lazy to do it myself, but it would be comforting to move the
> xml2xmlout data files into the xml2argvdata directory and run qemuxml2argvtest
> with the existing .args files to verify that all of these PCI addresses you've
> just generated are exactly the same as the ones that have been auto-generated
> over the last several years and put into the .args files...
>
I gave it a spin:
cd tests/qemuxml2xmloutdata; for i in *.xml; do new=`echo $i | sed
"s/qemuxml2xmlout-/qemuxml2argv-/g"`; cp $i ../qemuxml2argvdata/$new; done
qemuxml2argvtest passes with no problems.
But qemuxml2xmltest actually fails now! Nothing major though, just the
controllers being reordered a bit in a few test cases. The qemu PostParse bits
should probably be adding controllers in the same order as domain_conf parses
them in, so the bits match. A patch for another day though
> (Hmm - if the xml files in all the test data directories had their
> "qemuxml2XXX-" prefixes removed as we had earlier discussed, such an operation
> would be trivial :-)
>
Yup, it's still on my list.
>> diff --git a/tests/qemuxml2xmltest.c b/tests/qemuxml2xmltest.c
>> index e3b61c0..a06aa4d 100644
>> --- a/tests/qemuxml2xmltest.c
>> +++ b/tests/qemuxml2xmltest.c
>> @@ -37,13 +37,24 @@ struct testInfo {
>> };
>> static int
>> +qemuXML2XMLPreFormatCallback(virDomainDefPtr def, const void *opaque)
>> +{
>> + const struct testInfo *info = opaque;
>> +
>> + if (qemuDomainAssignAddresses(def, info->qemuCaps, NULL))
>> + return -1;
>> +
>> + return 0;
>> +}
>> +
>> +static int
>> testXML2XMLActive(const void *opaque)
>> {
>> const struct testInfo *info = opaque;
>> return testCompareDomXML2XMLFiles(driver.caps, driver.xmlopt,
>> info->inName, info->outActiveName,
>> true,
>> - NULL, NULL);
>> + qemuXML2XMLPreFormatCallback, opaque);
>> }
>> @@ -54,7 +65,7 @@ testXML2XMLInactive(const void *opaque)
>> return testCompareDomXML2XMLFiles(driver.caps, driver.xmlopt,
>> info->inName,
>> info->outInactiveName, false,
>> - NULL, NULL);
>> + qemuXML2XMLPreFormatCallback, opaque);
>> }
>> @@ -138,6 +149,9 @@ testCompareStatusXMLToXMLFiles(const void *opaque)
>> goto cleanup;
>> }
>> + if (qemuDomainAssignAddresses(obj->def, data->qemuCaps, NULL))
>> + goto cleanup;
>> +
>
> Why is this needed? I though that's what the pre-format callback was for.
>
This function, for testing domain status XML, doesn't use the standard
testutils infrastructure because it has some funky XML handling, so this call
needs to be opencoded.
>
>> /* format it back */
>> if (!(actual = virDomainObjFormat(driver.xmlopt, obj, NULL,
>> VIR_DOMAIN_DEF_FORMAT_SECURE))) {
>> @@ -379,14 +393,28 @@ mymain(void)
>> DO_TEST("disk-drive-network-rbd-ipv6");
>> DO_TEST("disk-drive-network-rbd-ceph-env");
>> DO_TEST("disk-drive-network-sheepdog");
>> - DO_TEST("disk-scsi-device");
>> + DO_TEST_FULL("disk-scsi-device", WHEN_ACTIVE,
>> + QEMU_CAPS_NODEFCONFIG,
>> + QEMU_CAPS_SCSI_LSI);
>
>
> The indentation of all of the followon lines to DO_TEST_FULL()'s are off. It's
> consistent, but since it doesn't match what all of our editors likely do
> automatically, so it will start to look ugly as new cases are added. (I didn't
> look - is the indentation also incorrect in qemuxml2argvtest.c (which is where
> I assume you got the caps lists for each test)?)
>
I didn't reflow anything in qemuxml2argtest I don't think. The nature of the
additions/removals means the indentation didn't change.
> ACK with the question about the extra call to qemuDomainAssignAddresses()
> answered and the indentation fixed so that it matches what an editor's
> auto-indent would do (putting the following lines one space past the column of
> the opening "(" )
>
Honestly I'm not a big fan of column aligning, if there's any future
find+replace function rename the indentation is off... there's many examples
of this in libvirt code. But I fixed these cases manually and pushed now.
Thanks for the reviews!
- Cole
More information about the libvir-list
mailing list