Revision 7d444d59 test/ganeti.utils.algo_unittest.py

b/test/ganeti.utils.algo_unittest.py
219 219
                     msg="Key function was not called once per value")
220 220

  
221 221

  
222
class TimeMock:
223
  def __init__(self, values):
224
    self.values = values
225

  
226
  def __call__(self):
227
    return self.values.pop(0)
228

  
229

  
230
class TestRunningTimeout(unittest.TestCase):
231
  def setUp(self):
232
    self.time_fn = TimeMock([0.0, 0.3, 4.6, 6.5])
233

  
234
  def testRemainingFloat(self):
235
    timeout = algo.RunningTimeout(5.0, True, _time_fn=self.time_fn)
236
    self.assertAlmostEqual(timeout.Remaining(), 4.7)
237
    self.assertAlmostEqual(timeout.Remaining(), 0.4)
238
    self.assertAlmostEqual(timeout.Remaining(), -1.5)
239

  
240
  def testRemaining(self):
241
    self.time_fn = TimeMock([0, 2, 4, 5, 6])
242
    timeout = algo.RunningTimeout(5, True, _time_fn=self.time_fn)
243
    self.assertEqual(timeout.Remaining(), 3)
244
    self.assertEqual(timeout.Remaining(), 1)
245
    self.assertEqual(timeout.Remaining(), 0)
246
    self.assertEqual(timeout.Remaining(), -1)
247

  
248
  def testRemainingNonNegative(self):
249
    timeout = algo.RunningTimeout(5.0, False, _time_fn=self.time_fn)
250
    self.assertAlmostEqual(timeout.Remaining(), 4.7)
251
    self.assertAlmostEqual(timeout.Remaining(), 0.4)
252
    self.assertEqual(timeout.Remaining(), 0.0)
253

  
254
  def testNegativeTimeout(self):
255
    self.assertRaises(ValueError, algo.RunningTimeout, -1.0, True)
256

  
257

  
222 258
if __name__ == "__main__":
223 259
  testutils.GanetiTestProgram()

Also available in: Unified diff