From 28a7318f2dd3b8d93bb461e0889f509312760718 Mon Sep 17 00:00:00 2001
From: Iustin Pop <iustin@google.com>
Date: Thu, 11 Nov 2010 10:38:44 +0100
Subject: [PATCH] Add unittests for TemporaryReservationManager

And fix an error message.

Signed-off-by: Iustin Pop <iustin@google.com>
Reviewed-by: Michael Hanselmann <hansmi@google.com>
---
 lib/config.py                  |  4 ++--
 test/ganeti.config_unittest.py | 20 ++++++++++++++++++++
 2 files changed, 22 insertions(+), 2 deletions(-)

diff --git a/lib/config.py b/lib/config.py
index c72ca6227..669dadafb 100644
--- a/lib/config.py
+++ b/lib/config.py
@@ -88,8 +88,8 @@ class TemporaryReservationManager:
 
   def Reserve(self, ec_id, resource):
     if self.Reserved(resource):
-      raise errors.ReservationError("Duplicate reservation for resource: %s." %
-                                    (resource))
+      raise errors.ReservationError("Duplicate reservation for resource '%s'"
+                                    % str(resource))
     if ec_id not in self._ec_reserved:
       self._ec_reserved[ec_id] = set([resource])
     else:
diff --git a/test/ganeti.config_unittest.py b/test/ganeti.config_unittest.py
index 984bfff62..51284a782 100755
--- a/test/ganeti.config_unittest.py
+++ b/test/ganeti.config_unittest.py
@@ -37,6 +37,8 @@ from ganeti import objects
 from ganeti import utils
 from ganeti import netutils
 
+from ganeti.config import TemporaryReservationManager
+
 import testutils
 import mocks
 
@@ -186,5 +188,23 @@ class TestConfigRunner(unittest.TestCase):
                       CheckSyntax, {mode: m_bridged, link: ''})
 
 
+class TestTRM(unittest.TestCase):
+  EC_ID = 1
+
+  def testEmpty(self):
+    t = TemporaryReservationManager()
+    t.Reserve(self.EC_ID, "a")
+    self.assertFalse(t.Reserved(self.EC_ID))
+    self.assertTrue(t.Reserved("a"))
+    self.assertEqual(len(t.GetReserved()), 1)
+
+  def testDuplicate(self):
+    t = TemporaryReservationManager()
+    t.Reserve(self.EC_ID, "a")
+    self.assertRaises(errors.ReservationError, t.Reserve, 2, "a")
+    t.DropECReservations(self.EC_ID)
+    self.assertFalse(t.Reserved("a"))
+
+
 if __name__ == '__main__':
   testutils.GanetiTestProgram()
-- 
GitLab