diff --git a/test/ganeti.utils_unittest.py b/test/ganeti.utils_unittest.py index 2c46afcb1ae2ea2eaaa44fc403e7e82221c85a2b..7c7e99c92201e2708ee25d6744e66c37b838b4f1 100755 --- a/test/ganeti.utils_unittest.py +++ b/test/ganeti.utils_unittest.py @@ -2390,5 +2390,41 @@ class TestFileID(testutils.GanetiTestCase): utils.SafeWriteFile(name, None, data="") +class TimeMock: + def __init__(self, values): + self.values = values + + def __call__(self): + return self.values.pop(0) + + +class TestRunningTimeout(unittest.TestCase): + def setUp(self): + self.time_fn = TimeMock([0.0, 0.3, 4.6, 6.5]) + + def testRemainingFloat(self): + timeout = utils.RunningTimeout(5.0, True, _time_fn=self.time_fn) + self.assertAlmostEqual(timeout.Remaining(), 4.7) + self.assertAlmostEqual(timeout.Remaining(), 0.4) + self.assertAlmostEqual(timeout.Remaining(), -1.5) + + def testRemaining(self): + self.time_fn = TimeMock([0, 2, 4, 5, 6]) + timeout = utils.RunningTimeout(5, True, _time_fn=self.time_fn) + self.assertEqual(timeout.Remaining(), 3) + self.assertEqual(timeout.Remaining(), 1) + self.assertEqual(timeout.Remaining(), 0) + self.assertEqual(timeout.Remaining(), -1) + + def testRemainingNonNegative(self): + timeout = utils.RunningTimeout(5.0, False, _time_fn=self.time_fn) + self.assertAlmostEqual(timeout.Remaining(), 4.7) + self.assertAlmostEqual(timeout.Remaining(), 0.4) + self.assertEqual(timeout.Remaining(), 0.0) + + def testNegativeTimeout(self): + self.assertRaises(ValueError, utils.RunningTimeout, -1.0, True) + + if __name__ == '__main__': testutils.GanetiTestProgram()