Revision 79d22269 test/ganeti.utils_unittest.py

b/test/ganeti.utils_unittest.py
1995 1995
    self.assert_(os.path.isdir(path))
1996 1996

  
1997 1997

  
1998
class TestRetry(testutils.GanetiTestCase):
1999
  def setUp(self):
2000
    testutils.GanetiTestCase.setUp(self)
2001
    self.retries = 0
2002

  
2003
  @staticmethod
2004
  def _RaiseRetryAgain():
2005
    raise utils.RetryAgain()
2006

  
2007
  @staticmethod
2008
  def _RaiseRetryAgainWithArg(args):
2009
    raise utils.RetryAgain(*args)
2010

  
2011
  def _WrongNestedLoop(self):
2012
    return utils.Retry(self._RaiseRetryAgain, 0.01, 0.02)
2013

  
2014
  def _RetryAndSucceed(self, retries):
2015
    if self.retries < retries:
2016
      self.retries += 1
2017
      raise utils.RetryAgain()
2018
    else:
2019
      return True
2020

  
2021
  def testRaiseTimeout(self):
2022
    self.failUnlessRaises(utils.RetryTimeout, utils.Retry,
2023
                          self._RaiseRetryAgain, 0.01, 0.02)
2024
    self.failUnlessRaises(utils.RetryTimeout, utils.Retry,
2025
                          self._RetryAndSucceed, 0.01, 0, args=[1])
2026
    self.failUnlessEqual(self.retries, 1)
2027

  
2028
  def testComplete(self):
2029
    self.failUnlessEqual(utils.Retry(lambda: True, 0, 1), True)
2030
    self.failUnlessEqual(utils.Retry(self._RetryAndSucceed, 0, 1, args=[2]),
2031
                         True)
2032
    self.failUnlessEqual(self.retries, 2)
2033

  
2034
  def testNestedLoop(self):
2035
    try:
2036
      self.failUnlessRaises(errors.ProgrammerError, utils.Retry,
2037
                            self._WrongNestedLoop, 0, 1)
2038
    except utils.RetryTimeout:
2039
      self.fail("Didn't detect inner loop's exception")
2040

  
2041
  def testTimeoutArgument(self):
2042
    retry_arg="my_important_debugging_message"
2043
    try:
2044
      utils.Retry(self._RaiseRetryAgainWithArg, 0.01, 0.02, args=[[retry_arg]])
2045
    except utils.RetryTimeout, err:
2046
      self.failUnlessEqual(err.args, (retry_arg, ))
2047
    else:
2048
      self.fail("Expected timeout didn't happen")
2049

  
2050
  def testRaiseInnerWithExc(self):
2051
    retry_arg="my_important_debugging_message"
2052
    try:
2053
      try:
2054
        utils.Retry(self._RaiseRetryAgainWithArg, 0.01, 0.02,
2055
                    args=[[errors.GenericError(retry_arg, retry_arg)]])
2056
      except utils.RetryTimeout, err:
2057
        err.RaiseInner()
2058
      else:
2059
        self.fail("Expected timeout didn't happen")
2060
    except errors.GenericError, err:
2061
      self.failUnlessEqual(err.args, (retry_arg, retry_arg))
2062
    else:
2063
      self.fail("Expected GenericError didn't happen")
2064

  
2065
  def testRaiseInnerWithMsg(self):
2066
    retry_arg="my_important_debugging_message"
2067
    try:
2068
      try:
2069
        utils.Retry(self._RaiseRetryAgainWithArg, 0.01, 0.02,
2070
                    args=[[retry_arg, retry_arg]])
2071
      except utils.RetryTimeout, err:
2072
        err.RaiseInner()
2073
      else:
2074
        self.fail("Expected timeout didn't happen")
2075
    except utils.RetryTimeout, err:
2076
      self.failUnlessEqual(err.args, (retry_arg, retry_arg))
2077
    else:
2078
      self.fail("Expected RetryTimeout didn't happen")
2079

  
2080

  
2081 1998
class TestLineSplitter(unittest.TestCase):
2082 1999
  def test(self):
2083 2000
    lines = []

Also available in: Unified diff