import unittest
import re
+import itertools
from ganeti import constants
from ganeti import locking
+from ganeti import utils
import testutils
self.failUnless(constants.OP_PRIO_NORMAL > constants.OP_PRIO_HIGH)
self.failUnless(constants.OP_PRIO_HIGH > constants.OP_PRIO_HIGHEST)
+ def testDiskDefaults(self):
+ self.failUnless(set(constants.DISK_LD_DEFAULTS.keys()) ==
+ constants.LOGICAL_DISK_TYPES)
+ self.failUnless(set(constants.DISK_DT_DEFAULTS.keys()) ==
+ constants.DISK_TEMPLATES)
+
+ def testJobStatus(self):
+ self.assertFalse(constants.JOBS_PENDING & constants.JOBS_FINALIZED)
+ self.assertFalse(constants.JOBS_PENDING - constants.JOB_STATUS_ALL)
+ self.assertFalse(constants.JOBS_FINALIZED - constants.JOB_STATUS_ALL)
+
+
+class TestExportedNames(unittest.TestCase):
+ _VALID_NAME_RE = re.compile(r"^[A-Z][A-Z0-9_]+$")
+ _BUILTIN_NAME_RE = re.compile(r"^__\w+__$")
+ _EXCEPTIONS = frozenset([
+ "SplitVersion",
+ "BuildVersion",
+ ])
+
+ def test(self):
+ wrong = \
+ set(itertools.ifilterfalse(self._BUILTIN_NAME_RE.match,
+ itertools.ifilterfalse(self._VALID_NAME_RE.match,
+ dir(constants))))
+ wrong -= self._EXCEPTIONS
+ self.assertFalse(wrong,
+ msg=("Invalid names exported from constants module: %s" %
+ utils.CommaJoin(sorted(wrong))))
+
class TestParameterNames(unittest.TestCase):
"""HV/BE parameter tests"""
VALID_NAME = re.compile("^[a-zA-Z_][a-zA-Z0-9_]*$")
def testNoDashes(self):
- for kind, source in [('hypervisor', constants.HVS_PARAMETER_TYPES),
- ('backend', constants.BES_PARAMETER_TYPES),
- ('nic', constants.NICS_PARAMETER_TYPES),
+ for kind, source in [("hypervisor", constants.HVS_PARAMETER_TYPES),
+ ("backend", constants.BES_PARAMETER_TYPES),
+ ("nic", constants.NICS_PARAMETER_TYPES),
("instdisk", constants.IDISK_PARAMS_TYPES),
("instnic", constants.INIC_PARAMS_TYPES),
]:
"""Test the confd constants"""
def testFourCc(self):
- self.failUnlessEqual(len(constants.CONFD_MAGIC_FOURCC), 4,
- "Invalid fourcc len, should be 4")
-
- def _IsUniqueSequence(self, sequence):
- seen = set()
- for member in sequence:
- if member in seen:
- return False
- seen.add(member)
- return True
+ self.assertEqual(len(constants.CONFD_MAGIC_FOURCC), 4,
+ msg="Invalid fourcc len, should be 4")
def testReqs(self):
- self.failUnless(self._IsUniqueSequence(constants.CONFD_REQS),
- "Duplicated confd request code")
+ self.assertFalse(utils.FindDuplicates(constants.CONFD_REQS),
+ msg="Duplicated confd request code")
def testReplStatuses(self):
- self.failUnless(self._IsUniqueSequence(constants.CONFD_REPL_STATUSES),
- "Duplicated confd reply status code")
+ self.assertFalse(utils.FindDuplicates(constants.CONFD_REPL_STATUSES),
+ msg="Duplicated confd reply status code")
-if __name__ == '__main__':
+if __name__ == "__main__":
testutils.GanetiTestProgram()