Revision 87ed6b79 test/py/cmdlib/testsupport/cmdlib_testcase.py
b/test/py/cmdlib/testsupport/cmdlib_testcase.py | ||
---|---|---|
29 | 29 |
|
30 | 30 |
from cmdlib.testsupport.config_mock import ConfigMock |
31 | 31 |
from cmdlib.testsupport.iallocator_mock import patchIAllocator |
32 |
from cmdlib.testsupport.lock_manager_mock import LockManagerMock
|
|
32 |
from cmdlib.testsupport.livelock_mock import LiveLockMock
|
|
33 | 33 |
from cmdlib.testsupport.netutils_mock import patchNetutils, \ |
34 | 34 |
SetupDefaultNetutilsMock |
35 | 35 |
from cmdlib.testsupport.processor_mock import ProcessorMock |
36 | 36 |
from cmdlib.testsupport.rpc_runner_mock import CreateRpcRunnerMock, \ |
37 | 37 |
RpcResultsBuilder, patchRpc, SetupDefaultRpcModuleMock |
38 | 38 |
from cmdlib.testsupport.ssh_mock import patchSsh |
39 |
from cmdlib.testsupport.wconfd_mock import WConfdMock |
|
39 | 40 |
|
40 | 41 |
from ganeti.cmdlib.base import LogicalUnit |
41 | 42 |
from ganeti import errors |
42 |
from ganeti import locking |
|
43 | 43 |
from ganeti import objects |
44 | 44 |
from ganeti import opcodes |
45 | 45 |
from ganeti import runtime |
... | ... | |
51 | 51 |
# pylint: disable=W0212 |
52 | 52 |
cfg = property(fget=lambda self: self._test_case.cfg) |
53 | 53 |
# pylint: disable=W0212 |
54 |
glm = property(fget=lambda self: self._test_case.glm) |
|
55 |
# pylint: disable=W0212 |
|
56 | 54 |
rpc = property(fget=lambda self: self._test_case.rpc) |
57 | 55 |
|
58 | 56 |
def __init__(self, test_case): |
59 | 57 |
self._test_case = test_case |
58 |
self.livelock = LiveLockMock() |
|
60 | 59 |
|
61 | 60 |
def AddNode(self, node, ec_id): |
62 | 61 |
self._test_case.cfg.AddNode(node, ec_id) |
63 |
self._test_case.glm.add(locking.LEVEL_NODE, node.uuid) |
|
64 |
self._test_case.glm.add(locking.LEVEL_NODE_RES, node.uuid) |
|
65 | 62 |
|
66 | 63 |
def ReaddNode(self, node): |
67 | 64 |
pass |
68 | 65 |
|
69 | 66 |
def RemoveNode(self, node): |
70 | 67 |
self._test_case.cfg.RemoveNode(node.uuid) |
71 |
self._test_case.glm.remove(locking.LEVEL_NODE, node.uuid) |
|
72 |
self._test_case.glm.remove(locking.LEVEL_NODE_RES, node.uuid) |
|
73 | 68 |
|
74 | 69 |
|
75 | 70 |
class MockLU(LogicalUnit): |
... | ... | |
90 | 85 |
The environment can be customized via the following fields: |
91 | 86 |
|
92 | 87 |
* C{cfg}: @see L{ConfigMock} |
93 |
* C{glm}: @see L{LockManagerMock} |
|
94 | 88 |
* C{rpc}: @see L{CreateRpcRunnerMock} |
95 | 89 |
* C{iallocator_cls}: @see L{patchIAllocator} |
96 | 90 |
* C{mcpu}: @see L{ProcessorMock} |
... | ... | |
168 | 162 |
|
169 | 163 |
""" |
170 | 164 |
self.cfg = ConfigMock() |
171 |
self.glm = LockManagerMock() |
|
172 | 165 |
self.rpc = CreateRpcRunnerMock() |
173 | 166 |
self.ctx = GanetiContextMock(self) |
174 | 167 |
self.mcpu = ProcessorMock(self.ctx) |
... | ... | |
211 | 204 |
@return: A mock LU |
212 | 205 |
|
213 | 206 |
""" |
214 |
return MockLU(self.mcpu, mock.MagicMock(), self.ctx, self.rpc) |
|
207 |
return MockLU(self.mcpu, mock.MagicMock(), self.ctx, self.rpc, |
|
208 |
(1234, "/tmp/mock/livelock"), WConfdMock()) |
|
215 | 209 |
|
216 | 210 |
def RpcResultsBuilder(self, use_node_names=False): |
217 | 211 |
"""Creates a pre-configured L{RpcResultBuilder} |
... | ... | |
231 | 225 |
@return: the result of the LU's C{Exec} method |
232 | 226 |
|
233 | 227 |
""" |
234 |
self.glm.AddLocksFromConfig(self.cfg) |
|
235 |
|
|
236 | 228 |
return self.mcpu.ExecOpCodeAndRecordOutput(opcode) |
237 | 229 |
|
238 | 230 |
def ExecOpCodeExpectException(self, opcode, |
... | ... | |
292 | 284 |
@return: the result of test_func |
293 | 285 |
|
294 | 286 |
""" |
295 |
self.glm.AddLocksFromConfig(self.cfg) |
|
296 |
|
|
297 | 287 |
return self.mcpu.RunWithLockedLU(opcode, test_func) |
298 | 288 |
|
299 | 289 |
def assertLogContainsMessage(self, expected_msg): |
Also available in: Unified diff