Revision 5eacbcae test/py/ganeti.cmdlib_unittest.py
b/test/py/ganeti.cmdlib_unittest.py | ||
---|---|---|
112 | 112 |
op = OpTest() |
113 | 113 |
lu = TestLU(op) |
114 | 114 |
|
115 |
c_i = lambda: common._CheckIAllocatorOrNode(lu, "iallocator", "node")
|
|
115 |
c_i = lambda: common.CheckIAllocatorOrNode(lu, "iallocator", "node") |
|
116 | 116 |
|
117 | 117 |
# Neither node nor iallocator given |
118 | 118 |
for n in (None, []): |
... | ... | |
434 | 434 |
assert iallocator._NEVAC_RESULT(alloc_result) |
435 | 435 |
|
436 | 436 |
lu = _FakeLU() |
437 |
result = common._LoadNodeEvacResult(lu, alloc_result,
|
|
438 |
early_release, use_nodes)
|
|
437 |
result = common.LoadNodeEvacResult(lu, alloc_result, |
|
438 |
early_release, use_nodes) |
|
439 | 439 |
|
440 | 440 |
if moved: |
441 | 441 |
(_, (info_args, )) = lu.info_log.pop(0) |
... | ... | |
463 | 463 |
assert iallocator._NEVAC_RESULT(alloc_result) |
464 | 464 |
|
465 | 465 |
lu = _FakeLU() |
466 |
self.assertRaises(errors.OpExecError, common._LoadNodeEvacResult,
|
|
466 |
self.assertRaises(errors.OpExecError, common.LoadNodeEvacResult, |
|
467 | 467 |
lu, alloc_result, False, False) |
468 | 468 |
self.assertFalse(lu.info_log) |
469 | 469 |
(_, (args, )) = lu.warning_log.pop(0) |
... | ... | |
549 | 549 |
|
550 | 550 |
class TestHvStateHelper(unittest.TestCase): |
551 | 551 |
def testWithoutOpData(self): |
552 |
self.assertEqual(common._MergeAndVerifyHvState(None, NotImplemented),
|
|
552 |
self.assertEqual(common.MergeAndVerifyHvState(None, NotImplemented), |
|
553 | 553 |
None) |
554 | 554 |
|
555 | 555 |
def testWithoutOldData(self): |
... | ... | |
558 | 558 |
constants.HVST_MEMORY_TOTAL: 4096, |
559 | 559 |
}, |
560 | 560 |
} |
561 |
self.assertEqual(common._MergeAndVerifyHvState(new, None), new)
|
|
561 |
self.assertEqual(common.MergeAndVerifyHvState(new, None), new) |
|
562 | 562 |
|
563 | 563 |
def testWithWrongHv(self): |
564 | 564 |
new = { |
... | ... | |
566 | 566 |
constants.HVST_MEMORY_TOTAL: 4096, |
567 | 567 |
}, |
568 | 568 |
} |
569 |
self.assertRaises(errors.OpPrereqError, common._MergeAndVerifyHvState,
|
|
569 |
self.assertRaises(errors.OpPrereqError, common.MergeAndVerifyHvState, |
|
570 | 570 |
new, None) |
571 | 571 |
|
572 | 572 |
class TestDiskStateHelper(unittest.TestCase): |
573 | 573 |
def testWithoutOpData(self): |
574 |
self.assertEqual(common._MergeAndVerifyDiskState(None, NotImplemented),
|
|
574 |
self.assertEqual(common.MergeAndVerifyDiskState(None, NotImplemented), |
|
575 | 575 |
None) |
576 | 576 |
|
577 | 577 |
def testWithoutOldData(self): |
... | ... | |
582 | 582 |
}, |
583 | 583 |
}, |
584 | 584 |
} |
585 |
self.assertEqual(common._MergeAndVerifyDiskState(new, None), new)
|
|
585 |
self.assertEqual(common.MergeAndVerifyDiskState(new, None), new) |
|
586 | 586 |
|
587 | 587 |
def testWithWrongStorageType(self): |
588 | 588 |
new = { |
... | ... | |
592 | 592 |
}, |
593 | 593 |
}, |
594 | 594 |
} |
595 |
self.assertRaises(errors.OpPrereqError, common._MergeAndVerifyDiskState,
|
|
595 |
self.assertRaises(errors.OpPrereqError, common.MergeAndVerifyDiskState, |
|
596 | 596 |
new, None) |
597 | 597 |
|
598 | 598 |
|
... | ... | |
687 | 687 |
|
688 | 688 |
def test(self): |
689 | 689 |
compute_fn = _ValidateComputeMinMaxSpec |
690 |
ret = common._ComputeIPolicySpecViolation(self._MICRO_IPOL, 1024, 1, 1, 1,
|
|
691 |
[1024], 1, constants.DT_PLAIN,
|
|
692 |
_compute_fn=compute_fn)
|
|
690 |
ret = common.ComputeIPolicySpecViolation(self._MICRO_IPOL, 1024, 1, 1, 1, |
|
691 |
[1024], 1, constants.DT_PLAIN, |
|
692 |
_compute_fn=compute_fn) |
|
693 | 693 |
self.assertEqual(ret, []) |
694 | 694 |
|
695 | 695 |
def testDiskFull(self): |
696 | 696 |
compute_fn = _NoDiskComputeMinMaxSpec |
697 |
ret = common._ComputeIPolicySpecViolation(self._MICRO_IPOL, 1024, 1, 1, 1,
|
|
698 |
[1024], 1, constants.DT_PLAIN,
|
|
699 |
_compute_fn=compute_fn)
|
|
697 |
ret = common.ComputeIPolicySpecViolation(self._MICRO_IPOL, 1024, 1, 1, 1, |
|
698 |
[1024], 1, constants.DT_PLAIN, |
|
699 |
_compute_fn=compute_fn) |
|
700 | 700 |
self.assertEqual(ret, [constants.ISPEC_DISK_COUNT]) |
701 | 701 |
|
702 | 702 |
def testDiskLess(self): |
703 | 703 |
compute_fn = _NoDiskComputeMinMaxSpec |
704 |
ret = common._ComputeIPolicySpecViolation(self._MICRO_IPOL, 1024, 1, 1, 1,
|
|
705 |
[1024], 1, constants.DT_DISKLESS,
|
|
706 |
_compute_fn=compute_fn)
|
|
704 |
ret = common.ComputeIPolicySpecViolation(self._MICRO_IPOL, 1024, 1, 1, 1, |
|
705 |
[1024], 1, constants.DT_DISKLESS, |
|
706 |
_compute_fn=compute_fn) |
|
707 | 707 |
self.assertEqual(ret, []) |
708 | 708 |
|
709 | 709 |
def testWrongTemplates(self): |
710 | 710 |
compute_fn = _ValidateComputeMinMaxSpec |
711 |
ret = common._ComputeIPolicySpecViolation(self._MICRO_IPOL, 1024, 1, 1, 1,
|
|
712 |
[1024], 1, constants.DT_DRBD8,
|
|
713 |
_compute_fn=compute_fn)
|
|
711 |
ret = common.ComputeIPolicySpecViolation(self._MICRO_IPOL, 1024, 1, 1, 1, |
|
712 |
[1024], 1, constants.DT_DRBD8, |
|
713 |
_compute_fn=compute_fn) |
|
714 | 714 |
self.assertEqual(len(ret), 1) |
715 | 715 |
self.assertTrue("Disk template" in ret[0]) |
716 | 716 |
|
717 | 717 |
def testInvalidArguments(self): |
718 |
self.assertRaises(AssertionError, common._ComputeIPolicySpecViolation,
|
|
718 |
self.assertRaises(AssertionError, common.ComputeIPolicySpecViolation, |
|
719 | 719 |
self._MICRO_IPOL, 1024, 1, 1, 1, [], 1, |
720 | 720 |
constants.DT_PLAIN,) |
721 | 721 |
|
722 | 722 |
def testInvalidSpec(self): |
723 | 723 |
spec = _SpecWrapper([None, False, "foo", None, "bar", None]) |
724 | 724 |
compute_fn = spec.ComputeMinMaxSpec |
725 |
ret = common._ComputeIPolicySpecViolation(self._MICRO_IPOL, 1024, 1, 1, 1,
|
|
726 |
[1024], 1, constants.DT_PLAIN,
|
|
727 |
_compute_fn=compute_fn)
|
|
725 |
ret = common.ComputeIPolicySpecViolation(self._MICRO_IPOL, 1024, 1, 1, 1, |
|
726 |
[1024], 1, constants.DT_PLAIN, |
|
727 |
_compute_fn=compute_fn) |
|
728 | 728 |
self.assertEqual(ret, ["foo", "bar"]) |
729 | 729 |
self.assertFalse(spec.spec) |
730 | 730 |
|
... | ... | |
779 | 779 |
constants.IPOLICY_DTS: [disk_template], |
780 | 780 |
} |
781 | 781 |
def AssertComputeViolation(ipolicy, violations): |
782 |
ret = common._ComputeIPolicySpecViolation(ipolicy, mem_size, cpu_count,
|
|
783 |
disk_count, nic_count,
|
|
784 |
disk_sizes, spindle_use,
|
|
785 |
disk_template)
|
|
782 |
ret = common.ComputeIPolicySpecViolation(ipolicy, mem_size, cpu_count, |
|
783 |
disk_count, nic_count, |
|
784 |
disk_sizes, spindle_use, |
|
785 |
disk_template) |
|
786 | 786 |
self.assertEqual(len(ret), violations) |
787 | 787 |
|
788 | 788 |
AssertComputeViolation(ipolicy1, 0) |
... | ... | |
847 | 847 |
disk_template=constants.DT_PLAIN) |
848 | 848 |
stub = _StubComputeIPolicySpecViolation(2048, 2, 1, 0, [512], 4, |
849 | 849 |
constants.DT_PLAIN) |
850 |
ret = common._ComputeIPolicyInstanceViolation(NotImplemented, instance,
|
|
851 |
cfg, _compute_fn=stub)
|
|
850 |
ret = common.ComputeIPolicyInstanceViolation(NotImplemented, instance, |
|
851 |
cfg, _compute_fn=stub) |
|
852 | 852 |
self.assertEqual(ret, []) |
853 | 853 |
instance2 = objects.Instance(beparams={}, disks=disks, nics=[], |
854 | 854 |
disk_template=constants.DT_PLAIN) |
855 |
ret = common._ComputeIPolicyInstanceViolation(NotImplemented, instance2,
|
|
856 |
cfg, _compute_fn=stub)
|
|
855 |
ret = common.ComputeIPolicyInstanceViolation(NotImplemented, instance2, |
|
856 |
cfg, _compute_fn=stub) |
|
857 | 857 |
self.assertEqual(ret, []) |
858 | 858 |
|
859 | 859 |
|
... | ... | |
926 | 926 |
|
927 | 927 |
def testNoViolation(self): |
928 | 928 |
compute_recoder = _CallRecorder(return_value=[]) |
929 |
instance._CheckTargetNodeIPolicy(self.lu, NotImplemented, self.instance,
|
|
930 |
self.target_node, NotImplemented,
|
|
931 |
_compute_fn=compute_recoder)
|
|
929 |
instance.CheckTargetNodeIPolicy(self.lu, NotImplemented, self.instance, |
|
930 |
self.target_node, NotImplemented, |
|
931 |
_compute_fn=compute_recoder) |
|
932 | 932 |
self.assertTrue(compute_recoder.called) |
933 | 933 |
self.assertEqual(self.lu.warning_log, []) |
934 | 934 |
|
935 | 935 |
def testNoIgnore(self): |
936 | 936 |
compute_recoder = _CallRecorder(return_value=["mem_size not in range"]) |
937 |
self.assertRaises(errors.OpPrereqError, instance._CheckTargetNodeIPolicy,
|
|
937 |
self.assertRaises(errors.OpPrereqError, instance.CheckTargetNodeIPolicy, |
|
938 | 938 |
self.lu, NotImplemented, self.instance, |
939 | 939 |
self.target_node, NotImplemented, |
940 | 940 |
_compute_fn=compute_recoder) |
... | ... | |
943 | 943 |
|
944 | 944 |
def testIgnoreViolation(self): |
945 | 945 |
compute_recoder = _CallRecorder(return_value=["mem_size not in range"]) |
946 |
instance._CheckTargetNodeIPolicy(self.lu, NotImplemented, self.instance,
|
|
946 |
instance.CheckTargetNodeIPolicy(self.lu, NotImplemented, self.instance, |
|
947 | 947 |
self.target_node, NotImplemented, |
948 | 948 |
ignore=True, _compute_fn=compute_recoder) |
949 | 949 |
self.assertTrue(compute_recoder.called) |
... | ... | |
956 | 956 |
def testEmptyContainer(self): |
957 | 957 |
container = [] |
958 | 958 |
chgdesc = [] |
959 |
instance.ApplyContainerMods("test", container, chgdesc, [], None, None, |
|
959 |
instance._ApplyContainerMods("test", container, chgdesc, [], None, None,
|
|
960 | 960 |
None) |
961 | 961 |
self.assertEqual(container, []) |
962 | 962 |
self.assertEqual(chgdesc, []) |
... | ... | |
964 | 964 |
def testAdd(self): |
965 | 965 |
container = [] |
966 | 966 |
chgdesc = [] |
967 |
mods = instance.PrepareContainerMods([ |
|
967 |
mods = instance._PrepareContainerMods([
|
|
968 | 968 |
(constants.DDM_ADD, -1, "Hello"), |
969 | 969 |
(constants.DDM_ADD, -1, "World"), |
970 | 970 |
(constants.DDM_ADD, 0, "Start"), |
971 | 971 |
(constants.DDM_ADD, -1, "End"), |
972 | 972 |
], None) |
973 |
instance.ApplyContainerMods("test", container, chgdesc, mods, |
|
973 |
instance._ApplyContainerMods("test", container, chgdesc, mods,
|
|
974 | 974 |
None, None, None) |
975 | 975 |
self.assertEqual(container, ["Start", "Hello", "World", "End"]) |
976 | 976 |
self.assertEqual(chgdesc, []) |
977 | 977 |
|
978 |
mods = instance.PrepareContainerMods([ |
|
978 |
mods = instance._PrepareContainerMods([
|
|
979 | 979 |
(constants.DDM_ADD, 0, "zero"), |
980 | 980 |
(constants.DDM_ADD, 3, "Added"), |
981 | 981 |
(constants.DDM_ADD, 5, "four"), |
982 | 982 |
(constants.DDM_ADD, 7, "xyz"), |
983 | 983 |
], None) |
984 |
instance.ApplyContainerMods("test", container, chgdesc, mods, |
|
984 |
instance._ApplyContainerMods("test", container, chgdesc, mods,
|
|
985 | 985 |
None, None, None) |
986 | 986 |
self.assertEqual(container, |
987 | 987 |
["zero", "Start", "Hello", "Added", "World", "four", |
... | ... | |
989 | 989 |
self.assertEqual(chgdesc, []) |
990 | 990 |
|
991 | 991 |
for idx in [-2, len(container) + 1]: |
992 |
mods = instance.PrepareContainerMods([ |
|
992 |
mods = instance._PrepareContainerMods([
|
|
993 | 993 |
(constants.DDM_ADD, idx, "error"), |
994 | 994 |
], None) |
995 |
self.assertRaises(IndexError, instance.ApplyContainerMods, |
|
995 |
self.assertRaises(IndexError, instance._ApplyContainerMods,
|
|
996 | 996 |
"test", container, None, mods, None, None, None) |
997 | 997 |
|
998 | 998 |
def testRemoveError(self): |
999 | 999 |
for idx in [0, 1, 2, 100, -1, -4]: |
1000 |
mods = instance.PrepareContainerMods([ |
|
1000 |
mods = instance._PrepareContainerMods([
|
|
1001 | 1001 |
(constants.DDM_REMOVE, idx, None), |
1002 | 1002 |
], None) |
1003 |
self.assertRaises(IndexError, instance.ApplyContainerMods, |
|
1003 |
self.assertRaises(IndexError, instance._ApplyContainerMods,
|
|
1004 | 1004 |
"test", [], None, mods, None, None, None) |
1005 | 1005 |
|
1006 |
mods = instance.PrepareContainerMods([ |
|
1006 |
mods = instance._PrepareContainerMods([
|
|
1007 | 1007 |
(constants.DDM_REMOVE, 0, object()), |
1008 | 1008 |
], None) |
1009 |
self.assertRaises(AssertionError, instance.ApplyContainerMods, |
|
1009 |
self.assertRaises(AssertionError, instance._ApplyContainerMods,
|
|
1010 | 1010 |
"test", [""], None, mods, None, None, None) |
1011 | 1011 |
|
1012 | 1012 |
def testAddError(self): |
1013 | 1013 |
for idx in range(-100, -1) + [100]: |
1014 |
mods = instance.PrepareContainerMods([ |
|
1014 |
mods = instance._PrepareContainerMods([
|
|
1015 | 1015 |
(constants.DDM_ADD, idx, None), |
1016 | 1016 |
], None) |
1017 |
self.assertRaises(IndexError, instance.ApplyContainerMods, |
|
1017 |
self.assertRaises(IndexError, instance._ApplyContainerMods,
|
|
1018 | 1018 |
"test", [], None, mods, None, None, None) |
1019 | 1019 |
|
1020 | 1020 |
def testRemove(self): |
1021 | 1021 |
container = ["item 1", "item 2"] |
1022 |
mods = instance.PrepareContainerMods([ |
|
1022 |
mods = instance._PrepareContainerMods([
|
|
1023 | 1023 |
(constants.DDM_ADD, -1, "aaa"), |
1024 | 1024 |
(constants.DDM_REMOVE, -1, None), |
1025 | 1025 |
(constants.DDM_ADD, -1, "bbb"), |
1026 | 1026 |
], None) |
1027 | 1027 |
chgdesc = [] |
1028 |
instance.ApplyContainerMods("test", container, chgdesc, mods, |
|
1028 |
instance._ApplyContainerMods("test", container, chgdesc, mods,
|
|
1029 | 1029 |
None, None, None) |
1030 | 1030 |
self.assertEqual(container, ["item 1", "item 2", "bbb"]) |
1031 | 1031 |
self.assertEqual(chgdesc, [ |
... | ... | |
1034 | 1034 |
|
1035 | 1035 |
def testModify(self): |
1036 | 1036 |
container = ["item 1", "item 2"] |
1037 |
mods = instance.PrepareContainerMods([ |
|
1037 |
mods = instance._PrepareContainerMods([
|
|
1038 | 1038 |
(constants.DDM_MODIFY, -1, "a"), |
1039 | 1039 |
(constants.DDM_MODIFY, 0, "b"), |
1040 | 1040 |
(constants.DDM_MODIFY, 1, "c"), |
1041 | 1041 |
], None) |
1042 | 1042 |
chgdesc = [] |
1043 |
instance.ApplyContainerMods("test", container, chgdesc, mods, |
|
1043 |
instance._ApplyContainerMods("test", container, chgdesc, mods,
|
|
1044 | 1044 |
None, None, None) |
1045 | 1045 |
self.assertEqual(container, ["item 1", "item 2"]) |
1046 | 1046 |
self.assertEqual(chgdesc, []) |
1047 | 1047 |
|
1048 | 1048 |
for idx in [-2, len(container) + 1]: |
1049 |
mods = instance.PrepareContainerMods([ |
|
1049 |
mods = instance._PrepareContainerMods([
|
|
1050 | 1050 |
(constants.DDM_MODIFY, idx, "error"), |
1051 | 1051 |
], None) |
1052 |
self.assertRaises(IndexError, instance.ApplyContainerMods, |
|
1052 |
self.assertRaises(IndexError, instance._ApplyContainerMods,
|
|
1053 | 1053 |
"test", container, None, mods, None, None, None) |
1054 | 1054 |
|
1055 | 1055 |
class _PrivateData: |
... | ... | |
1077 | 1077 |
def testAddWithCreateFunction(self): |
1078 | 1078 |
container = [] |
1079 | 1079 |
chgdesc = [] |
1080 |
mods = instance.PrepareContainerMods([ |
|
1080 |
mods = instance._PrepareContainerMods([
|
|
1081 | 1081 |
(constants.DDM_ADD, -1, "Hello"), |
1082 | 1082 |
(constants.DDM_ADD, -1, "World"), |
1083 | 1083 |
(constants.DDM_ADD, 0, "Start"), |
... | ... | |
1087 | 1087 |
(constants.DDM_REMOVE, 2, None), |
1088 | 1088 |
(constants.DDM_ADD, 1, "More"), |
1089 | 1089 |
], self._PrivateData) |
1090 |
instance.ApplyContainerMods("test", container, chgdesc, mods, |
|
1090 |
instance._ApplyContainerMods("test", container, chgdesc, mods,
|
|
1091 | 1091 |
self._CreateTestFn, self._ModifyTestFn, |
1092 | 1092 |
self._RemoveTestFn) |
1093 | 1093 |
self.assertEqual(container, [ |
... | ... | |
1167 | 1167 |
return copy.deepcopy(constants.DISK_DT_DEFAULTS) |
1168 | 1168 |
|
1169 | 1169 |
def testWrongDiskTemplate(self): |
1170 |
gdt = instance._GenerateDiskTemplate
|
|
1170 |
gdt = instance.GenerateDiskTemplate |
|
1171 | 1171 |
disk_template = "##unknown##" |
1172 | 1172 |
|
1173 | 1173 |
assert disk_template not in constants.DISK_TEMPLATES |
... | ... | |
1178 | 1178 |
self.GetDiskParams()) |
1179 | 1179 |
|
1180 | 1180 |
def testDiskless(self): |
1181 |
gdt = instance._GenerateDiskTemplate
|
|
1181 |
gdt = instance.GenerateDiskTemplate |
|
1182 | 1182 |
|
1183 | 1183 |
result = gdt(self.lu, constants.DT_DISKLESS, "inst27734.example.com", |
1184 | 1184 |
"node30113.example.com", [], [], |
... | ... | |
1191 | 1191 |
file_driver=NotImplemented, |
1192 | 1192 |
req_file_storage=NotImplemented, |
1193 | 1193 |
req_shr_file_storage=NotImplemented): |
1194 |
gdt = instance._GenerateDiskTemplate
|
|
1194 |
gdt = instance.GenerateDiskTemplate |
|
1195 | 1195 |
|
1196 | 1196 |
map(lambda params: utils.ForceDictType(params, |
1197 | 1197 |
constants.IDISK_PARAMS_TYPES), |
... | ... | |
1320 | 1320 |
]) |
1321 | 1321 |
|
1322 | 1322 |
def testDrbd8(self): |
1323 |
gdt = instance._GenerateDiskTemplate
|
|
1323 |
gdt = instance.GenerateDiskTemplate |
|
1324 | 1324 |
drbd8_defaults = constants.DISK_LD_DEFAULTS[constants.LD_DRBD8] |
1325 | 1325 |
drbd8_default_metavg = drbd8_defaults[constants.LDP_DEFAULT_METAVG] |
1326 | 1326 |
|
... | ... | |
1491 | 1491 |
disk_template=constants.DT_PLAIN, |
1492 | 1492 |
disks=disks) |
1493 | 1493 |
|
1494 |
self.assertRaises(errors.OpExecError, instance._WipeDisks, lu, inst)
|
|
1494 |
self.assertRaises(errors.OpExecError, instance.WipeDisks, lu, inst) |
|
1495 | 1495 |
|
1496 | 1496 |
def _FailingWipeCb(self, (disk, _), offset, size): |
1497 | 1497 |
# This should only ever be called for the first disk |
... | ... | |
1519 | 1519 |
disks=disks) |
1520 | 1520 |
|
1521 | 1521 |
try: |
1522 |
instance._WipeDisks(lu, inst)
|
|
1522 |
instance.WipeDisks(lu, inst) |
|
1523 | 1523 |
except errors.OpExecError, err: |
1524 | 1524 |
self.assertTrue(str(err), "Could not wipe disk 0 at offset 0 ") |
1525 | 1525 |
else: |
... | ... | |
1562 | 1562 |
|
1563 | 1563 |
(lu, inst, pauset, progresst) = self._PrepareWipeTest(0, disks) |
1564 | 1564 |
|
1565 |
instance._WipeDisks(lu, inst)
|
|
1565 |
instance.WipeDisks(lu, inst) |
|
1566 | 1566 |
|
1567 | 1567 |
self.assertEqual(pauset.history, [ |
1568 | 1568 |
("disk0", 1024, True), |
... | ... | |
1592 | 1592 |
self._PrepareWipeTest(start_offset, disks) |
1593 | 1593 |
|
1594 | 1594 |
# Test start offset with only one disk |
1595 |
instance._WipeDisks(lu, inst,
|
|
1596 |
disks=[(1, disks[1], start_offset)])
|
|
1595 |
instance.WipeDisks(lu, inst, |
|
1596 |
disks=[(1, disks[1], start_offset)]) |
|
1597 | 1597 |
|
1598 | 1598 |
# Only the second disk may have been paused and wiped |
1599 | 1599 |
self.assertEqual(pauset.history, [ |
... | ... | |
1639 | 1639 |
|
1640 | 1640 |
class TestCopyLockList(unittest.TestCase): |
1641 | 1641 |
def test(self): |
1642 |
self.assertEqual(instance._CopyLockList([]), [])
|
|
1643 |
self.assertEqual(instance._CopyLockList(None), None)
|
|
1644 |
self.assertEqual(instance._CopyLockList(locking.ALL_SET), locking.ALL_SET)
|
|
1642 |
self.assertEqual(instance.CopyLockList([]), []) |
|
1643 |
self.assertEqual(instance.CopyLockList(None), None) |
|
1644 |
self.assertEqual(instance.CopyLockList(locking.ALL_SET), locking.ALL_SET) |
|
1645 | 1645 |
|
1646 | 1646 |
names = ["foo", "bar"] |
1647 |
output = instance._CopyLockList(names)
|
|
1647 |
output = instance.CopyLockList(names) |
|
1648 | 1648 |
self.assertEqual(names, output) |
1649 | 1649 |
self.assertNotEqual(id(names), id(output), msg="List was not copied") |
1650 | 1650 |
|
... | ... | |
1897 | 1897 |
} |
1898 | 1898 |
if not isgroup: |
1899 | 1899 |
diff_policy[constants.ISPECS_STD] = diff_std |
1900 |
new_policy = common._GetUpdatedIPolicy(old_policy, diff_policy,
|
|
1901 |
group_policy=isgroup)
|
|
1900 |
new_policy = common.GetUpdatedIPolicy(old_policy, diff_policy, |
|
1901 |
group_policy=isgroup) |
|
1902 | 1902 |
|
1903 | 1903 |
self.assertTrue(constants.ISPECS_MINMAX in new_policy) |
1904 | 1904 |
self.assertEqual(new_policy[constants.ISPECS_MINMAX], diff_minmax) |
... | ... | |
1919 | 1919 |
self.assertEqual(new_std[key], old_std[key]) |
1920 | 1920 |
|
1921 | 1921 |
def _TestSet(self, old_policy, diff_policy, isgroup): |
1922 |
new_policy = common._GetUpdatedIPolicy(old_policy, diff_policy,
|
|
1922 |
new_policy = common.GetUpdatedIPolicy(old_policy, diff_policy, |
|
1923 | 1923 |
group_policy=isgroup) |
1924 | 1924 |
for key in diff_policy: |
1925 | 1925 |
self.assertTrue(key in new_policy) |
... | ... | |
1946 | 1946 |
diff_policy = { |
1947 | 1947 |
constants.IPOLICY_SPINDLE_RATIO: constants.VALUE_DEFAULT, |
1948 | 1948 |
} |
1949 |
new_policy = common._GetUpdatedIPolicy(old_policy, diff_policy,
|
|
1950 |
group_policy=True)
|
|
1949 |
new_policy = common.GetUpdatedIPolicy(old_policy, diff_policy, |
|
1950 |
group_policy=True) |
|
1951 | 1951 |
for key in diff_policy: |
1952 | 1952 |
self.assertFalse(key in new_policy) |
1953 | 1953 |
for key in old_policy: |
... | ... | |
1955 | 1955 |
self.assertTrue(key in new_policy) |
1956 | 1956 |
self.assertEqual(new_policy[key], old_policy[key]) |
1957 | 1957 |
|
1958 |
self.assertRaises(errors.OpPrereqError, common._GetUpdatedIPolicy,
|
|
1958 |
self.assertRaises(errors.OpPrereqError, common.GetUpdatedIPolicy, |
|
1959 | 1959 |
old_policy, diff_policy, group_policy=False) |
1960 | 1960 |
|
1961 | 1961 |
def testUnsetEmpty(self): |
... | ... | |
1964 | 1964 |
diff_policy = { |
1965 | 1965 |
key: constants.VALUE_DEFAULT, |
1966 | 1966 |
} |
1967 |
new_policy = common._GetUpdatedIPolicy(old_policy, diff_policy,
|
|
1968 |
group_policy=True)
|
|
1967 |
new_policy = common.GetUpdatedIPolicy(old_policy, diff_policy, |
|
1968 |
group_policy=True) |
|
1969 | 1969 |
self.assertEqual(new_policy, old_policy) |
1970 | 1970 |
|
1971 | 1971 |
def _TestInvalidKeys(self, old_policy, isgroup): |
... | ... | |
1974 | 1974 |
INVALID_KEY: 3, |
1975 | 1975 |
} |
1976 | 1976 |
invalid_policy = INVALID_DICT |
1977 |
self.assertRaises(errors.OpPrereqError, common._GetUpdatedIPolicy,
|
|
1977 |
self.assertRaises(errors.OpPrereqError, common.GetUpdatedIPolicy, |
|
1978 | 1978 |
old_policy, invalid_policy, group_policy=isgroup) |
1979 | 1979 |
invalid_ispecs = { |
1980 | 1980 |
constants.ISPECS_MINMAX: [INVALID_DICT], |
1981 | 1981 |
} |
1982 |
self.assertRaises(errors.TypeEnforcementError, common._GetUpdatedIPolicy,
|
|
1982 |
self.assertRaises(errors.TypeEnforcementError, common.GetUpdatedIPolicy, |
|
1983 | 1983 |
old_policy, invalid_ispecs, group_policy=isgroup) |
1984 | 1984 |
if isgroup: |
1985 | 1985 |
invalid_for_group = { |
1986 | 1986 |
constants.ISPECS_STD: constants.IPOLICY_DEFAULTS[constants.ISPECS_STD], |
1987 | 1987 |
} |
1988 |
self.assertRaises(errors.OpPrereqError, common._GetUpdatedIPolicy,
|
|
1988 |
self.assertRaises(errors.OpPrereqError, common.GetUpdatedIPolicy, |
|
1989 | 1989 |
old_policy, invalid_for_group, group_policy=isgroup) |
1990 | 1990 |
good_ispecs = self._OLD_CLUSTER_POLICY[constants.ISPECS_MINMAX] |
1991 | 1991 |
invalid_ispecs = copy.deepcopy(good_ispecs) |
... | ... | |
1997 | 1997 |
ispec = minmax[key] |
1998 | 1998 |
ispec[INVALID_KEY] = None |
1999 | 1999 |
self.assertRaises(errors.TypeEnforcementError, |
2000 |
common._GetUpdatedIPolicy, old_policy,
|
|
2000 |
common.GetUpdatedIPolicy, old_policy, |
|
2001 | 2001 |
invalid_policy, group_policy=isgroup) |
2002 | 2002 |
del ispec[INVALID_KEY] |
2003 | 2003 |
for par in constants.ISPECS_PARAMETERS: |
2004 | 2004 |
oldv = ispec[par] |
2005 | 2005 |
ispec[par] = "this_is_not_good" |
2006 | 2006 |
self.assertRaises(errors.TypeEnforcementError, |
2007 |
common._GetUpdatedIPolicy,
|
|
2007 |
common.GetUpdatedIPolicy, |
|
2008 | 2008 |
old_policy, invalid_policy, group_policy=isgroup) |
2009 | 2009 |
ispec[par] = oldv |
2010 | 2010 |
# This is to make sure that no two errors were present during the tests |
2011 |
common._GetUpdatedIPolicy(old_policy, invalid_policy,
|
|
2012 |
group_policy=isgroup)
|
|
2011 |
common.GetUpdatedIPolicy(old_policy, invalid_policy, |
|
2012 |
group_policy=isgroup) |
|
2013 | 2013 |
|
2014 | 2014 |
def testInvalidKeys(self): |
2015 | 2015 |
self._TestInvalidKeys(self._OLD_GROUP_POLICY, True) |
... | ... | |
2021 | 2021 |
bad_policy = { |
2022 | 2022 |
par: "invalid_value", |
2023 | 2023 |
} |
2024 |
self.assertRaises(errors.OpPrereqError, common._GetUpdatedIPolicy, {},
|
|
2024 |
self.assertRaises(errors.OpPrereqError, common.GetUpdatedIPolicy, {}, |
|
2025 | 2025 |
bad_policy, group_policy=True) |
2026 | 2026 |
|
2027 | 2027 |
if __name__ == "__main__": |
Also available in: Unified diff