Reproduce that only half of the PCI devs are removed

This reproduces a bug where at each resource tracker
update_available_resources periodic run only half of the remove PCI
devices are deleted from the DB.

Related-Bug: #2115729
Change-Id: I95694f38105d61b4b7befd9223089f3a0d862634
Signed-off-by: Balazs Gibizer <gibi@redhat.com>
This commit is contained in:
Balazs Gibizer
2025-07-02 17:57:23 +02:00
parent 2c19c07d5e
commit d3cb76c858
+15 -2
View File
@@ -878,12 +878,25 @@ class PciDevTrackerTestCase(test.NoDBTestCase):
self._fake_pci_device_destroy)
self.destroy_called = 0
self.assertEqual(len(self.tracker.pci_devs), 3)
dev = self.tracker.pci_devs[0]
dev1 = self.tracker.pci_devs[0]
dev2 = self.tracker.pci_devs[1]
self.update_called = 0
dev.remove()
dev1.remove()
dev2.remove()
self.tracker.save(self.fake_context)
# This is https://bugs.launchpad.net/nova/+bug/2115729 as
# only one half of the removed devices are destroyed.
self.assertEqual(len(self.tracker.pci_devs), 2)
self.assertEqual(self.destroy_called, 1)
# a subsequent save will destroy half of the remaining removed devices
self.tracker.save(self.fake_context)
self.assertEqual(len(self.tracker.pci_devs), 1)
self.assertEqual(self.destroy_called, 2)
# after the fix we should see that a single save causes all the
# removed devices destroyed
# self.assertEqual(len(self.tracker.pci_devs), 1)
# self.assertEqual(self.destroy_called, 2)
def test_clean_usage(self):
inst_2 = copy.copy(self.inst)