mgr = _ModuleProxy()
- # DO NOT REMOVE: required for ceph-mgr to load a module
- from .module import Module, StandbyModule # noqa: F401
else:
import logging
logging.basicConfig(level=logging.DEBUG)
os.environ['PATH'] = '{}:{}'.format(os.path.abspath('../../../../build/bin'),
os.environ['PATH'])
- from tests import mock # type: ignore
+ from tests import mock, mock_ceph_modules # type: ignore
mgr = mock.Mock()
mgr.get_frontend_path.side_effect = lambda: os.path.abspath("./frontend/dist")
+
+ mock_ceph_modules()
+
+# DO NOT REMOVE: required for ceph-mgr to load a module
+from .module import Module, StandbyModule # noqa: F401
+++ /dev/null
-import sys
-
-try:
- from mock import Mock, patch
-except ImportError:
- from unittest.mock import Mock, patch
-
-
-class MockRadosError(Exception):
- def __init__(self, message, errno=None):
- super(MockRadosError, self).__init__(message)
- self.errno = errno
-
- def __str__(self):
- msg = super(MockRadosError, self).__str__()
- if self.errno is None:
- return msg
- return '[errno {0}] {1}'.format(self.errno, msg)
-
-
-def pytest_configure(config):
- sys.modules.update({
- 'rados': Mock(Error=MockRadosError, OSError=MockRadosError),
- 'rbd': Mock(),
- 'cephfs': Mock(),
- })
-
- # we need the following patches to fix the issue of multiple inheritance when
- # one of the base classes is being mocked.
- # Error example:
- # TypeError: metaclass conflict: the metaclass of a derived class must be a (non-strict) \
- # subclass of the metaclasses of all its bases
- class _BaseMgrModule:
- pass
-
- patcher = patch("ceph_module.BaseMgrStandbyModule", new=_BaseMgrModule)
- patcher.start()
- patcher = patch("ceph_module.BaseMgrModule", new=_BaseMgrModule)
- patcher.start()
cm.BaseMgrModule = M
cm.BaseMgrStandbyModule = M
sys.modules['ceph_module'] = cm
+
+ def mock_ceph_modules():
+ class MockRadosError(Exception):
+ def __init__(self, message, errno=None):
+ super(MockRadosError, self).__init__(message)
+ self.errno = errno
+
+ def __str__(self):
+ msg = super(MockRadosError, self).__str__()
+ if self.errno is None:
+ return msg
+ return '[errno {0}] {1}'.format(self.errno, msg)
+
+
+ sys.modules.update({
+ 'rados': mock.Mock(Error=MockRadosError, OSError=MockRadosError),
+ 'rbd': mock.Mock(),
+ 'cephfs': mock.Mock(),
+ })
\ No newline at end of file