From 2bac48c4739a5bde46489d14dd3c20c52fb9d894 Mon Sep 17 00:00:00 2001
From: Adeodato Simo <dato@google.com>
Date: Thu, 9 Dec 2010 16:45:55 +0000
Subject: [PATCH] Add some unit tests for ConfigWriter.AddNodeGroup()

Signed-off-by: Adeodato Simo <dato@google.com>
Reviewed-by: Michael Hanselmann <hansmi@google.com>
---
 test/ganeti.config_unittest.py | 35 ++++++++++++++++++++++++++++++++++
 1 file changed, 35 insertions(+)

diff --git a/test/ganeti.config_unittest.py b/test/ganeti.config_unittest.py
index 4221e92ae..a21bfa6da 100755
--- a/test/ganeti.config_unittest.py
+++ b/test/ganeti.config_unittest.py
@@ -204,6 +204,41 @@ class TestConfigRunner(unittest.TestCase):
     cfg.Update(node, None)
     self.assertEqual(cfg.GetNdParams(node), my_ndparams)
 
+  def testAddGroupFillsFieldsIfMissing(self):
+    cfg = self._get_object()
+    group = objects.NodeGroup(name="test", members=[])
+    cfg.AddNodeGroup(group, "my-job")
+    self.assert_(utils.UUID_RE.match(group.uuid))
+    self.assertEqual(constants.ALLOC_POLICY_PREFERRED, group.alloc_policy)
+
+  def testAddGroupPreservesFields(self):
+    cfg = self._get_object()
+    group = objects.NodeGroup(name="test", members=[],
+                              alloc_policy=constants.ALLOC_POLICY_LAST_RESORT)
+    cfg.AddNodeGroup(group, "my-job")
+    self.assertEqual(constants.ALLOC_POLICY_LAST_RESORT, group.alloc_policy)
+
+  def testAddGroupDoesNotPreserveFields(self):
+    cfg = self._get_object()
+    group = objects.NodeGroup(name="test", members=[],
+                              serial_no=17, ctime=123, mtime=456)
+    cfg.AddNodeGroup(group, "my-job")
+    self.assertEqual(1, group.serial_no)
+    self.assert_(group.ctime > 1200000000)
+    self.assert_(group.mtime > 1200000000)
+
+  def testAddGroupCanSkipUUIDCheck(self):
+    cfg = self._get_object()
+    uuid = cfg.GenerateUniqueID("my-job")
+    group = objects.NodeGroup(name="test", members=[], uuid=uuid,
+                              serial_no=17, ctime=123, mtime=456)
+
+    self.assertRaises(errors.ConfigurationError,
+                      cfg.AddNodeGroup, group, "my-job")
+
+    cfg.AddNodeGroup(group, "my-job", check_uuid=False) # Does not raise.
+    self.assertEqual(uuid, group.uuid)
+
 
 class TestTRM(unittest.TestCase):
   EC_ID = 1
-- 
GitLab