From e6784773dffc65e5ddcfffd3e116c18caf4a496d Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Ren=C3=A9=20Nussbaumer?= <rn@google.com>
Date: Tue, 16 Nov 2010 14:46:07 +0100
Subject: [PATCH] Adding unittests for RunningTimeout
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit

Signed-off-by: RenΓ© Nussbaumer <rn@google.com>
Reviewed-by: Michael Hanselmann <hansmi@google.com>
---
 test/ganeti.utils_unittest.py | 36 +++++++++++++++++++++++++++++++++++
 1 file changed, 36 insertions(+)

diff --git a/test/ganeti.utils_unittest.py b/test/ganeti.utils_unittest.py
index 2c46afcb1..7c7e99c92 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()
-- 
GitLab