For short lists using sorted output will make the code easier to debug and
test.

בתאריך 13 באוק׳ 2016 11:03 לפנה״צ,‏ "Francesco Romani" <from...@redhat.com>
כתב:

> ----- Original Message -----
> > From: "Nir Soffer" <nsof...@redhat.com>
> > To: "devel" <devel@ovirt.org>, "Adam Litke" <ali...@redhat.com>, "Dan
> Kenigsberg" <dan...@redhat.com>, "Francesco
> > Romani" <from...@redhat.com>, "Piotr Kliczewski" <pklic...@redhat.com>,
> "Martin Sivak" <msi...@redhat.com>
> > Sent: Wednesday, October 12, 2016 8:14:11 PM
> > Subject: [VDSM] Tests failing because of ordering dependencies
> >
> > Hi all,
> >
> > Trying to run vdsm tests via tox (so correct nose is used automatically),
> > some of the tests fail.
> >
> > The failure are all about ordering expectations, which look wrong.
> >
> > Please check and fix your tests.
> >
> > Thanks,
> > Nir
>
> > 18:04:10 -------------------- >> begin captured logging <<
> > --------------------
> > 18:04:10 2016-10-12 18:01:56,902 INFO    (MainThread) [MOM] Preparing
> > MOM interface (momIF:49)
> > 18:04:10 2016-10-12 18:01:56,903 INFO    (MainThread) [MOM] Using
> > named unix socket /tmp/tmpqOQZvm/test_mom_vdsm.sock (momIF:58)
> > 18:04:10 --------------------- >> end captured logging <<
> > ---------------------
> > 18:04:10
> > 18:04:10
> > ======================================================================
> > 18:04:10 FAIL: test_disk_virtio_cache (vmStorageTests.DriveXMLTests)
> > 18:04:10
> > ----------------------------------------------------------------------
> > 18:04:10 Traceback (most recent call last):
> > 18:04:10   File
> > "/home/jenkins/workspace/vdsm_master_check-patch-el7-x86_64/
> vdsm/tests/vmStorageTests.py",
> > line 84, in test_disk_virtio_cache
> > 18:04:10     self.check(vm_conf, conf, xml, is_block_device=False)
> > 18:04:10   File
> > "/home/jenkins/workspace/vdsm_master_check-patch-el7-x86_64/
> vdsm/tests/vmStorageTests.py",
> > line 222, in check
> > 18:04:10     self.assertXMLEqual(drive.getXML().toxml(), xml)
> > 18:04:10   File
> > "/home/jenkins/workspace/vdsm_master_check-patch-el7-x86_64/
> vdsm/tests/testlib.py",
> > line 253, in assertXMLEqual
> > 18:04:10     (actualXML, expectedXML))
> > 18:04:10 AssertionError: XMLs are different:
> > 18:04:10 Actual:
> > 18:04:10 <disk device="disk" snapshot="no" type="file">
> > 18:04:10     <source file="/path/to/volume" />
> > 18:04:10     <target bus="virtio" dev="vda" />
> > 18:04:10     <shareable />
> > 18:04:10     <serial>54-a672-23e5b495a9ea</serial>
> > 18:04:10     <driver cache="writethrough" error_policy="enospace"
> > io="threads" name="qemu" type="qcow2" />
> > 18:04:10     <iotune>
> > 18:04:10         <total_iops_sec>800</total_iops_sec>
> > 18:04:10         <read_bytes_sec>6120000</read_bytes_sec>
> > 18:04:10     </iotune>
> > 18:04:10 </disk>
> > 18:04:10
> > 18:04:10 Expected:
> > 18:04:10 <disk device="disk" snapshot="no" type="file">
> > 18:04:10     <source file="/path/to/volume" />
> > 18:04:10     <target bus="virtio" dev="vda" />
> > 18:04:10     <shareable />
> > 18:04:10     <serial>54-a672-23e5b495a9ea</serial>
> > 18:04:10     <driver cache="writethrough" error_policy="enospace"
> > io="threads" name="qemu" type="qcow2" />
> > 18:04:10     <iotune>
> > 18:04:10         <read_bytes_sec>6120000</read_bytes_sec>
> > 18:04:10         <total_iops_sec>800</total_iops_sec>
> >
> > Order of these elements differ, need to check why.
>
> Most likely because we build the xml like
>
> (vdsm/virt/vmdevices/storage.py)
>
>     def _getIotuneXML(self):
>         iotune = vmxml.Element('iotune')
>         for key, value in self.specParams['ioTune'].iteritems():
>             iotune.appendChildWithArgs(key, text=str(value))
>         return iotune
>
> and iteritems() ordering is not defined
> > ----------------------------------------------------------------------
> > 18:04:10 Traceback (most recent call last):
> > 18:04:10   File
> > "/home/jenkins/workspace/vdsm_master_check-patch-el7-x86_64/
> vdsm/tests/vmTests.py",
> > line 434, in testCpuXML
> > 18:04:10     self.assertXMLEqual(find_xml_element(xml, "./cputune"),
> > cputuneXML)
> > 18:04:10   File
> > "/home/jenkins/workspace/vdsm_master_check-patch-el7-x86_64/
> vdsm/tests/testlib.py",
> > line 253, in assertXMLEqual
> > 18:04:10     (actualXML, expectedXML))
> > 18:04:10 AssertionError: XMLs are different:
> > 18:04:10 Actual:
> > 18:04:10 <cputune>
> > 18:04:10     <vcpupin cpuset="0-1" vcpu="0" />
> > 18:04:10     <vcpupin cpuset="2-3" vcpu="1" />
> > 18:04:10 </cputune>
> > 18:04:10
> > 18:04:10 Expected:
> > 18:04:10 <cputune>
> > 18:04:10     <vcpupin cpuset="2-3" vcpu="1" />
> > 18:04:10     <vcpupin cpuset="0-1" vcpu="0" />
> >
> > Same
>
> (vdsm/virt/vmxml.py)
>
>     def appendCpus(self):
>         # lot of code
>
>         # CPU-pinning support
>         # see http://www.ovirt.org/wiki/Features/Design/cpu-pinning
>         if 'cpuPinning' in self.conf:
>             cputune = Element('cputune')
>             cpuPinning = self.conf.get('cpuPinning')
>             for cpuPin in cpuPinning.keys():
>                 cputune.appendChildWithArgs('vcpupin', vcpu=cpuPin,
>                                             cpuset=cpuPinning[cpuPin])
>             self.dom.appendChild(cputune)
>
>
>
> > 18:04:10 </cputune>
> > 18:04:10
> > 18:04:10
> > 18:04:10
> > 18:04:10
> > ======================================================================
> > 18:04:10 FAIL: testSetIoTune (vmTests.TestVm)
> > 18:04:10
> > ----------------------------------------------------------------------
> > 18:04:10 Traceback (most recent call last):
> > 18:04:10   File
> > "/home/jenkins/workspace/vdsm_master_check-patch-el7-x86_64/
> vdsm/tests/vmTests.py",
> > line 936, in testSetIoTune
> > 18:04:10     self._xml_sanitizer(expected_xml))
> > 18:04:10 AssertionError: '<disk device="hdd" snapshot="no"
> > type="block"><source dev="/dev/dummy"/><target bus="ide"
> > dev="hda"/><iotune><write_bytes_sec>1</write_bytes_sec><
> total_bytes_sec>0</total_bytes_sec><read_bytes_sec>2</
> read_bytes_sec></iotune></disk>'
> > != '<disk device="hdd" snapshot="no" type="block"><source
> > dev="/dev/dummy"/><target bus="ide"
> > dev="hda"/><iotune><read_bytes_sec>2</read_bytes_sec><
> write_bytes_sec>1</write_bytes_sec><total_bytes_sec>0</
> total_bytes_sec></iotune></disk>'
> > 18:04:10 -------------------- >> begin captured logging <<
> > --------------------
> > 18:04:10 2016-10-12 18:03:34,110 INFO    (MainThread) [virt.vm]
> > vmId=`TESTING`::New device XML for hda: <disk device="hdd"
> > snapshot="no" type="block">
> > 18:04:10 <source dev="/dev/dummy"/>
> > 18:04:10 <target bus="ide" dev="hda"/>
> > 18:04:10 <iotune>
> > 18:04:10 <write_bytes_sec>1</write_bytes_sec>
> > 18:04:10 <total_bytes_sec>0</total_bytes_sec>
> > 18:04:10 <read_bytes_sec>2</read_bytes_sec>
> > 18:04:10 </iotune>
> > 18:04:10 </disk>
> >
> > Seems that this test is not using assertXMLEqual so we don't get
> meaningful
> > error like the tests above.
>
> Fixed the reporting: https://gerrit.ovirt.org/65417
>
> For the sloppy virt tests, I think the right call is to fix the tests
> rather than the code. The code is not wrong, because the ordering
> of the attributes is not relevant. We "just" need tests which can
> interpret XML on a deeper level.
>
> --
> Francesco Romani
> Red Hat Engineering Virtualization R & D
> Phone: 8261328
> IRC: fromani
>
_______________________________________________
Devel mailing list
Devel@ovirt.org
http://lists.ovirt.org/mailman/listinfo/devel

Reply via email to