diff options
| author | Soren Hansen <soren.hansen@rackspace.com> | 2010-09-13 09:03:14 +0200 |
|---|---|---|
| committer | Soren Hansen <soren.hansen@rackspace.com> | 2010-09-13 09:03:14 +0200 |
| commit | cb13f09d7fe886bc8340770ff8c7011b6dbab0db (patch) | |
| tree | 09218fe1d5d36619d92eb033f02a97d5590cb7cd | |
| parent | 30cec546812799fba09a2bab2b3aa4aad712ae3c (diff) | |
| download | nova-cb13f09d7fe886bc8340770ff8c7011b6dbab0db.tar.gz nova-cb13f09d7fe886bc8340770ff8c7011b6dbab0db.tar.xz nova-cb13f09d7fe886bc8340770ff8c7011b6dbab0db.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.py | 18 |
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, |
