LGTM, thanks.

On Fri, Sep 20, 2013 at 1:51 PM, Klaus Aehlig <[email protected]> wrote:

> Also have some tests where the time the various components
> (inspecting the time function, calling the function, etc) have
> a non-trivial time. Also, have two tests demonstrating that
> the number of retries actually depends on the amount of time
> the function takes to complete.
>
> Signed-off-by: Klaus Aehlig <[email protected]>
> ---
>  test/py/ganeti.utils.retry_unittest.py | 32
> ++++++++++++++++++++++++++++++++
>  1 file changed, 32 insertions(+)
>
> diff --git a/test/py/ganeti.utils.retry_unittest.py b/test/py/
> ganeti.utils.retry_unittest.py
> index e369ace..d58c0af 100755
> --- a/test/py/ganeti.utils.retry_unittest.py
> +++ b/test/py/ganeti.utils.retry_unittest.py
> @@ -36,8 +36,11 @@ class TestRetry(testutils.GanetiTestCase):
>      self.retries = 0
>      self.called = 0
>      self.time = 1379601882.0
> +    self.time_for_time_fn = 0
> +    self.time_for_retry_and_succeed = 0
>
>    def _time_fn(self):
> +    self.time += self.time_for_time_fn
>      return self.time
>
>    def _wait_fn(self, delay):
> @@ -55,6 +58,7 @@ class TestRetry(testutils.GanetiTestCase):
>      return utils.Retry(self._RaiseRetryAgain, 0.01, 0.02)
>
>    def _RetryAndSucceed(self, retries):
> +    self.time += self.time_for_retry_and_succeed
>      if self.retries < retries:
>        self.retries += 1
>        raise utils.RetryAgain()
> @@ -89,6 +93,15 @@ class TestRetry(testutils.GanetiTestCase):
>                           True)
>      self.failUnlessEqual(self.retries, 2)
>
> +  def testCompleteNontrivialTimes(self):
> +    self.time_for_time_fn = 0.01
> +    self.time_for_retry_and_succeed = 0.1
> +    self.failUnlessEqual(utils.Retry(self._RetryAndSucceed, 0, 1,
> args=[2],
> +                                     wait_fn = self._wait_fn,
> +                                     _time_fn = self._time_fn),
> +                         True)
> +    self.failUnlessEqual(self.retries, 2)
> +
>    def testNestedLoop(self):
>      try:
>        self.failUnlessRaises(errors.ProgrammerError, utils.Retry,
> @@ -107,6 +120,25 @@ class TestRetry(testutils.GanetiTestCase):
>      else:
>        self.fail("Expected timeout didn't happen")
>
> +  def testTimeout(self):
> +    self.time_for_time_fn = 0.01
> +    self.time_for_retry_and_succeed = 10
> +    try:
> +      utils.Retry(self._RetryAndSucceed, 1, 18, args=[2],
> +                  wait_fn = self._wait_fn, _time_fn = self._time_fn)
> +    except utils.RetryTimeout, err:
> +      self.failUnlessEqual(err.args, ())
> +    else:
> +      self.fail("Expected timeout didn't happen")
> +
> +  def testNoTimeout(self):
> +    self.time_for_time_fn = 0.01
> +    self.time_for_retry_and_succeed = 8
> +    self.failUnlessEqual(
> +      utils.Retry(self._RetryAndSucceed, 1, 18, args=[2],
> +                  wait_fn = self._wait_fn, _time_fn = self._time_fn),
> +      True)
> +
>    def testRaiseInnerWithExc(self):
>      retry_arg="my_important_debugging_message"
>      try:
> --
> 1.8.4
>
>


-- 
Thomas Thrainer | Software Engineer | [email protected] |

Google Germany GmbH
Dienerstr. 12
80331 München

Registergericht und -nummer: Hamburg, HRB 86891
Sitz der Gesellschaft: Hamburg
Geschäftsführer: Graham Law, Christine Elizabeth Flores

Reply via email to