summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorSoren Hansen <soren.hansen@rackspace.com>2010-09-13 18:48:18 +0000
committerTarmac <>2010-09-13 18:48:18 +0000
commit34fd5575ea2af2ff903fdd6369387d476c164f80 (patch)
tree94872f0044213624100a8f8357cf0dbb7ac5fce6
parent5a5a926f4ec0a9c57b7f5176bc1654a62735c6b6 (diff)
parentcb13f09d7fe886bc8340770ff8c7011b6dbab0db (diff)
downloadnova-34fd5575ea2af2ff903fdd6369387d476c164f80.tar.gz
nova-34fd5575ea2af2ff903fdd6369387d476c164f80.tar.xz
nova-34fd5575ea2af2ff903fdd6369387d476c164f80.zip
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.
-rw-r--r--nova/tests/volume_unittest.py18
1 files changed, 14 insertions, 4 deletions
diff --git a/nova/tests/volume_unittest.py b/nova/tests/volume_unittest.py
index 2a07afe69..540b71585 100644
--- a/nova/tests/volume_unittest.py
+++ b/nova/tests/volume_unittest.py
@@ -128,7 +128,6 @@ class VolumeTestCase(test.TrialTestCase):
volume_service.get_volume,
volume_id)
- @defer.inlineCallbacks
def test_multiple_volume_race_condition(self):
vol_size = "5"
user_id = "fake"
@@ -137,17 +136,28 @@ class VolumeTestCase(test.TrialTestCase):
def _check(volume_id):
vol = volume_service.get_volume(volume_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)
logging.debug("got %s" % shelf_blade)
- vol.destroy()
+ return vol
deferreds = []
for i in range(5):
d = self.volume.create_volume(vol_size, user_id, project_id)
d.addCallback(_check)
d.addErrback(self.fail)
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):
# TODO(termie): Figure out how to test with two nodes,