Move vol.destroy() call out of the _check method in test_multiple_volume_race_condition test and into a callback of the DeferredList. This should fix the intermittent failure of that test. I /think/ test_too_many_volumes's failure was caused by test_multiple_volume_race_condition failure, since I have not been able to reproduce its failure after fixing this one.
This commit is contained in:
@@ -128,7 +128,6 @@ class VolumeTestCase(test.TrialTestCase):
|
|||||||
volume_service.get_volume,
|
volume_service.get_volume,
|
||||||
volume_id)
|
volume_id)
|
||||||
|
|
||||||
@defer.inlineCallbacks
|
|
||||||
def test_multiple_volume_race_condition(self):
|
def test_multiple_volume_race_condition(self):
|
||||||
vol_size = "5"
|
vol_size = "5"
|
||||||
user_id = "fake"
|
user_id = "fake"
|
||||||
@@ -137,17 +136,28 @@ class VolumeTestCase(test.TrialTestCase):
|
|||||||
def _check(volume_id):
|
def _check(volume_id):
|
||||||
vol = volume_service.get_volume(volume_id)
|
vol = volume_service.get_volume(volume_id)
|
||||||
shelf_blade = '%s.%s' % (vol['shelf_id'], vol['blade_id'])
|
shelf_blade = '%s.%s' % (vol['shelf_id'], vol['blade_id'])
|
||||||
self.assert_(shelf_blade not in shelf_blades)
|
self.assertTrue(shelf_blade not in shelf_blades,
|
||||||
|
"Same shelf/blade tuple came back twice")
|
||||||
shelf_blades.append(shelf_blade)
|
shelf_blades.append(shelf_blade)
|
||||||
logging.debug("got %s" % shelf_blade)
|
logging.debug("got %s" % shelf_blade)
|
||||||
vol.destroy()
|
return vol
|
||||||
deferreds = []
|
deferreds = []
|
||||||
for i in range(5):
|
for i in range(5):
|
||||||
d = self.volume.create_volume(vol_size, user_id, project_id)
|
d = self.volume.create_volume(vol_size, user_id, project_id)
|
||||||
d.addCallback(_check)
|
d.addCallback(_check)
|
||||||
d.addErrback(self.fail)
|
d.addErrback(self.fail)
|
||||||
deferreds.append(d)
|
deferreds.append(d)
|
||||||
yield defer.DeferredList(deferreds)
|
def destroy_volumes(retvals):
|
||||||
|
overall_succes = True
|
||||||
|
for success, volume in retvals:
|
||||||
|
if not success:
|
||||||
|
overall_succes = False
|
||||||
|
else:
|
||||||
|
volume.destroy()
|
||||||
|
self.assertTrue(overall_succes)
|
||||||
|
d = defer.DeferredList(deferreds)
|
||||||
|
d.addCallback(destroy_volumes)
|
||||||
|
return d
|
||||||
|
|
||||||
def test_multi_node(self):
|
def test_multi_node(self):
|
||||||
# TODO(termie): Figure out how to test with two nodes,
|
# TODO(termie): Figure out how to test with two nodes,
|
||||||
|
|||||||
Reference in New Issue
Block a user