Modify LUInstanceCreate to support networks
[ganeti-local] / test / ganeti.utils.retry_unittest.py
index 8173a30..42e43b4 100755 (executable)
@@ -34,6 +34,7 @@ class TestRetry(testutils.GanetiTestCase):
   def setUp(self):
     testutils.GanetiTestCase.setUp(self)
     self.retries = 0
+    self.called = 0
 
   @staticmethod
   def _RaiseRetryAgain():
@@ -53,6 +54,14 @@ class TestRetry(testutils.GanetiTestCase):
     else:
       return True
 
+  def _SimpleRetryAndSucceed(self, retries):
+    self.called += 1
+    if self.retries < retries:
+      self.retries += 1
+      return False
+    else:
+      return True
+
   def testRaiseTimeout(self):
     self.failUnlessRaises(utils.RetryTimeout, utils.Retry,
                           self._RaiseRetryAgain, 0.01, 0.02)
@@ -112,6 +121,20 @@ class TestRetry(testutils.GanetiTestCase):
     else:
       self.fail("Expected RetryTimeout didn't happen")
 
+  def testSimpleRetry(self):
+    self.assertFalse(utils.SimpleRetry(True, lambda: False, 0.01, 0.02))
+    self.assertFalse(utils.SimpleRetry(lambda x: x, lambda: False, 0.01, 0.02))
+    self.assertTrue(utils.SimpleRetry(True, lambda: True, 0, 1))
+    self.assertTrue(utils.SimpleRetry(lambda x: x, lambda: True, 0, 1))
+    self.assertTrue(utils.SimpleRetry(True, self._SimpleRetryAndSucceed,
+                                      0, 1, args=[1]))
+    self.assertEqual(self.retries, 1)
+    self.assertEqual(self.called, 2)
+    self.called = self.retries = 0
+    self.assertTrue(utils.SimpleRetry(True, self._SimpleRetryAndSucceed,
+                                      0, 1, args=[2]))
+    self.assertEqual(self.called, 3)
+
 
 if __name__ == "__main__":
   testutils.GanetiTestProgram()