From 8ec505ddf961e7a53cf558870db789b15086203a Mon Sep 17 00:00:00 2001 From: Adeodato Simo <dato@google.com> Date: Fri, 7 Jan 2011 13:25:55 +0000 Subject: [PATCH] Add unit tests for CheckAssignmentForSplitInstances Signed-off-by: Adeodato Simo <dato@google.com> Reviewed-by: Michael Hanselmann <hansmi@google.com> --- test/ganeti.cmdlib_unittest.py | 52 ++++++++++++++++++++++++++++++++++ 1 file changed, 52 insertions(+) diff --git a/test/ganeti.cmdlib_unittest.py b/test/ganeti.cmdlib_unittest.py index 8f64c84f8..d39fbb0da 100755 --- a/test/ganeti.cmdlib_unittest.py +++ b/test/ganeti.cmdlib_unittest.py @@ -36,6 +36,7 @@ from ganeti import errors from ganeti import utils from ganeti import luxi from ganeti import ht +from ganeti import objects import testutils import mocks @@ -156,5 +157,56 @@ class TestLUQuery(unittest.TestCase): "xyz") +class TestLUAssignGroupNodes(unittest.TestCase): + + def testCheckAssignmentForSplitInstances(self): + node_data = dict((name, objects.Node(name=name, group=group)) + for (name, group) in [("n1a", "g1"), ("n1b", "g1"), + ("n2a", "g2"), ("n2b", "g2"), + ("n3a", "g3"), ("n3b", "g3"), + ("n3c", "g3"), + ]) + + def Instance(name, pnode, snode): + if snode is None: + disks = [] + disk_template = constants.DT_DISKLESS + else: + disks = [objects.Disk(dev_type=constants.LD_DRBD8, + logical_id=[pnode, snode, 1, 17, 17])] + disk_template = constants.DT_DRBD8 + + return objects.Instance(name=name, primary_node=pnode, disks=disks, + disk_template=disk_template) + + instance_data = dict((name, Instance(name, pnode, snode)) + for name, pnode, snode in [("inst1a", "n1a", "n1b"), + ("inst1b", "n1b", "n1a"), + ("inst2a", "n2a", "n2b"), + ("inst3a", "n3a", None), + ("inst3b", "n3b", "n1b"), + ("inst3c", "n3b", "n2b"), + ]) + + # Test first with the existing state. + (new, prev) = \ + cmdlib.LUAssignGroupNodes.CheckAssignmentForSplitInstances([], + node_data, + instance_data) + + self.assertEqual([], new) + self.assertEqual(set(["inst3b", "inst3c"]), set(prev)) + + # And now some changes. + (new, prev) = \ + cmdlib.LUAssignGroupNodes.CheckAssignmentForSplitInstances([("n1b", + "g3")], + node_data, + instance_data) + + self.assertEqual(set(["inst1a", "inst1b"]), set(new)) + self.assertEqual(set(["inst3c"]), set(prev)) + + if __name__ == "__main__": testutils.GanetiTestProgram() -- GitLab