Statistics
| Branch: | Tag: | Revision:

root / test / ganeti.mcpu_unittest.py @ 7578ab0a

History | View | Annotate | Download (2.1 kB)

1
#!/usr/bin/python
2
#
3

    
4
# Copyright (C) 2009, 2011 Google Inc.
5
#
6
# This program is free software; you can redistribute it and/or modify
7
# it under the terms of the GNU General Public License as published by
8
# the Free Software Foundation; either version 2 of the License, or
9
# (at your option) any later version.
10
#
11
# This program is distributed in the hope that it will be useful, but
12
# WITHOUT ANY WARRANTY; without even the implied warranty of
13
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
14
# General Public License for more details.
15
#
16
# You should have received a copy of the GNU General Public License
17
# along with this program; if not, write to the Free Software
18
# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
19
# 02110-1301, USA.
20

    
21

    
22
"""Script for unittesting the mcpu module"""
23

    
24

    
25
import unittest
26

    
27
from ganeti import mcpu
28
from ganeti import opcodes
29
from ganeti.constants import \
30
    LOCK_ATTEMPTS_TIMEOUT, \
31
    LOCK_ATTEMPTS_MAXWAIT, \
32
    LOCK_ATTEMPTS_MINWAIT
33

    
34
import testutils
35

    
36

    
37
class TestLockAttemptTimeoutStrategy(unittest.TestCase):
38
  def testConstants(self):
39
    tpa = mcpu.LockAttemptTimeoutStrategy._TIMEOUT_PER_ATTEMPT
40
    self.assert_(len(tpa) > LOCK_ATTEMPTS_TIMEOUT / LOCK_ATTEMPTS_MAXWAIT)
41
    self.assert_(sum(tpa) >= LOCK_ATTEMPTS_TIMEOUT)
42

    
43
  def testSimple(self):
44
    strat = mcpu.LockAttemptTimeoutStrategy(_random_fn=lambda: 0.5,
45
                                            _time_fn=lambda: 0.0)
46

    
47
    prev = None
48
    for i in range(len(strat._TIMEOUT_PER_ATTEMPT)):
49
      timeout = strat.NextAttempt()
50
      self.assert_(timeout is not None)
51

    
52
      self.assert_(timeout <= LOCK_ATTEMPTS_MAXWAIT)
53
      self.assert_(timeout >= LOCK_ATTEMPTS_MINWAIT)
54
      self.assert_(prev is None or timeout >= prev)
55

    
56
      prev = timeout
57

    
58
    for _ in range(10):
59
      self.assert_(strat.NextAttempt() is None)
60

    
61

    
62
class TestDispatchTable(unittest.TestCase):
63
  def test(self):
64
    for opcls in opcodes.OP_MAPPING.values():
65
      if not opcls.WITH_LU:
66
        continue
67
      self.assertTrue(opcls in mcpu.Processor.DISPATCH_TABLE,
68
                      msg="%s missing handler class" % opcls)
69

    
70

    
71
if __name__ == "__main__":
72
  testutils.GanetiTestProgram()