Statistics
| Branch: | Tag: | Revision:

root / test / ganeti.constants_unittest.py @ c2a8e8ba

History | View | Annotate | Download (3.9 kB)

1 eeb1d86a Michael Hanselmann
#!/usr/bin/python
2 eeb1d86a Michael Hanselmann
#
3 eeb1d86a Michael Hanselmann
4 eeb1d86a Michael Hanselmann
# Copyright (C) 2006, 2007, 2008 Google Inc.
5 eeb1d86a Michael Hanselmann
#
6 eeb1d86a Michael Hanselmann
# This program is free software; you can redistribute it and/or modify
7 eeb1d86a Michael Hanselmann
# it under the terms of the GNU General Public License as published by
8 eeb1d86a Michael Hanselmann
# the Free Software Foundation; either version 2 of the License, or
9 eeb1d86a Michael Hanselmann
# (at your option) any later version.
10 eeb1d86a Michael Hanselmann
#
11 eeb1d86a Michael Hanselmann
# This program is distributed in the hope that it will be useful, but
12 eeb1d86a Michael Hanselmann
# WITHOUT ANY WARRANTY; without even the implied warranty of
13 eeb1d86a Michael Hanselmann
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
14 eeb1d86a Michael Hanselmann
# General Public License for more details.
15 eeb1d86a Michael Hanselmann
#
16 eeb1d86a Michael Hanselmann
# You should have received a copy of the GNU General Public License
17 eeb1d86a Michael Hanselmann
# along with this program; if not, write to the Free Software
18 eeb1d86a Michael Hanselmann
# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
19 eeb1d86a Michael Hanselmann
# 0.0510-1301, USA.
20 eeb1d86a Michael Hanselmann
21 eeb1d86a Michael Hanselmann
22 eeb1d86a Michael Hanselmann
"""Script for unittesting the constants module"""
23 eeb1d86a Michael Hanselmann
24 eeb1d86a Michael Hanselmann
25 eeb1d86a Michael Hanselmann
import unittest
26 67fc3042 Iustin Pop
import re
27 eeb1d86a Michael Hanselmann
28 eeb1d86a Michael Hanselmann
from ganeti import constants
29 eeb1d86a Michael Hanselmann
30 25231ec5 Michael Hanselmann
import testutils
31 25231ec5 Michael Hanselmann
32 eeb1d86a Michael Hanselmann
33 eeb1d86a Michael Hanselmann
class TestConstants(unittest.TestCase):
34 eeb1d86a Michael Hanselmann
  """Constants tests"""
35 eeb1d86a Michael Hanselmann
36 eeb1d86a Michael Hanselmann
  def testConfigVersion(self):
37 eeb1d86a Michael Hanselmann
    self.failUnless(constants.CONFIG_MAJOR >= 0 and
38 eeb1d86a Michael Hanselmann
                    constants.CONFIG_MAJOR <= 99)
39 eeb1d86a Michael Hanselmann
    self.failUnless(constants.CONFIG_MINOR >= 0 and
40 eeb1d86a Michael Hanselmann
                    constants.CONFIG_MINOR <= 99)
41 eeb1d86a Michael Hanselmann
    self.failUnless(constants.CONFIG_REVISION >= 0 and
42 eeb1d86a Michael Hanselmann
                    constants.CONFIG_REVISION <= 9999)
43 eeb1d86a Michael Hanselmann
    self.failUnless(constants.CONFIG_VERSION >= 0 and
44 eeb1d86a Michael Hanselmann
                    constants.CONFIG_VERSION <= 99999999)
45 eeb1d86a Michael Hanselmann
46 1b45f4e5 Michael Hanselmann
    self.failUnless(constants.BuildVersion(0, 0, 0) == 0)
47 1b45f4e5 Michael Hanselmann
    self.failUnless(constants.BuildVersion(10, 10, 1010) == 10101010)
48 1b45f4e5 Michael Hanselmann
    self.failUnless(constants.BuildVersion(12, 34, 5678) == 12345678)
49 1b45f4e5 Michael Hanselmann
    self.failUnless(constants.BuildVersion(99, 99, 9999) == 99999999)
50 1b45f4e5 Michael Hanselmann
51 1b45f4e5 Michael Hanselmann
    self.failUnless(constants.SplitVersion(00000000) == (0, 0, 0))
52 1b45f4e5 Michael Hanselmann
    self.failUnless(constants.SplitVersion(10101010) == (10, 10, 1010))
53 1b45f4e5 Michael Hanselmann
    self.failUnless(constants.SplitVersion(12345678) == (12, 34, 5678))
54 1b45f4e5 Michael Hanselmann
    self.failUnless(constants.SplitVersion(99999999) == (99, 99, 9999))
55 1b45f4e5 Michael Hanselmann
    self.failUnless(constants.SplitVersion(constants.CONFIG_VERSION) ==
56 1b45f4e5 Michael Hanselmann
                    (constants.CONFIG_MAJOR, constants.CONFIG_MINOR,
57 1b45f4e5 Michael Hanselmann
                     constants.CONFIG_REVISION))
58 1b45f4e5 Michael Hanselmann
59 74f37195 Michael Hanselmann
  def testDiskStatus(self):
60 74f37195 Michael Hanselmann
    self.failUnless(constants.LDS_OKAY < constants.LDS_UNKNOWN)
61 74f37195 Michael Hanselmann
    self.failUnless(constants.LDS_UNKNOWN < constants.LDS_FAULTY)
62 74f37195 Michael Hanselmann
63 313b2dd4 Michael Hanselmann
  def testClockSkew(self):
64 313b2dd4 Michael Hanselmann
    self.failUnless(constants.NODE_MAX_CLOCK_SKEW <
65 313b2dd4 Michael Hanselmann
                    (0.8 * constants.CONFD_MAX_CLOCK_SKEW))
66 313b2dd4 Michael Hanselmann
67 b98bf262 Michael Hanselmann
  def testSslCertExpiration(self):
68 b98bf262 Michael Hanselmann
    self.failUnless(constants.SSL_CERT_EXPIRATION_ERROR <
69 b98bf262 Michael Hanselmann
                    constants.SSL_CERT_EXPIRATION_WARN)
70 b98bf262 Michael Hanselmann
71 eeb1d86a Michael Hanselmann
72 67fc3042 Iustin Pop
class TestParameterNames(unittest.TestCase):
73 67fc3042 Iustin Pop
  """HV/BE parameter tests"""
74 67fc3042 Iustin Pop
  VALID_NAME = re.compile("^[a-zA-Z_][a-zA-Z0-9_]*$")
75 67fc3042 Iustin Pop
76 67fc3042 Iustin Pop
  def testNoDashes(self):
77 67fc3042 Iustin Pop
    for kind, source in [('hypervisor', constants.HVS_PARAMETER_TYPES),
78 476ce612 Guido Trotter
                         ('backend', constants.BES_PARAMETER_TYPES),
79 476ce612 Guido Trotter
                         ('nic', constants.NICS_PARAMETER_TYPES),
80 476ce612 Guido Trotter
                        ]:
81 67fc3042 Iustin Pop
      for key in source:
82 67fc3042 Iustin Pop
        self.failUnless(self.VALID_NAME.match(key),
83 67fc3042 Iustin Pop
                        "The %s parameter '%s' contains invalid characters" %
84 67fc3042 Iustin Pop
                        (kind, key))
85 67fc3042 Iustin Pop
86 74f37195 Michael Hanselmann
87 28a34a39 Guido Trotter
class TestConfdConstants(unittest.TestCase):
88 28a34a39 Guido Trotter
  """Test the confd constants"""
89 28a34a39 Guido Trotter
90 28a34a39 Guido Trotter
  def testFourCc(self):
91 28a34a39 Guido Trotter
    self.failUnlessEqual(len(constants.CONFD_MAGIC_FOURCC), 4,
92 313b2dd4 Michael Hanselmann
                         "Invalid fourcc len, should be 4")
93 28a34a39 Guido Trotter
94 28a34a39 Guido Trotter
  def _IsUniqueSequence(self, sequence):
95 28a34a39 Guido Trotter
    seen = set()
96 28a34a39 Guido Trotter
    for member in sequence:
97 28a34a39 Guido Trotter
      if member in seen:
98 28a34a39 Guido Trotter
        return False
99 28a34a39 Guido Trotter
      seen.add(member)
100 28a34a39 Guido Trotter
    return True
101 28a34a39 Guido Trotter
102 28a34a39 Guido Trotter
  def testReqs(self):
103 28a34a39 Guido Trotter
    self.failUnless(self._IsUniqueSequence(constants.CONFD_REQS),
104 28a34a39 Guido Trotter
                    "Duplicated confd request code")
105 28a34a39 Guido Trotter
106 28a34a39 Guido Trotter
  def testReplStatuses(self):
107 28a34a39 Guido Trotter
    self.failUnless(self._IsUniqueSequence(constants.CONFD_REPL_STATUSES),
108 28a34a39 Guido Trotter
                    "Duplicated confd reply status code")
109 28a34a39 Guido Trotter
110 28a34a39 Guido Trotter
111 eeb1d86a Michael Hanselmann
if __name__ == '__main__':
112 25231ec5 Michael Hanselmann
  testutils.GanetiTestProgram()