diff --git a/os_brick/tests/initiator/test_linuxrbd.py b/os_brick/tests/initiator/test_linuxrbd.py index c3ff1af9b..bfdb9eccc 100644 --- a/os_brick/tests/initiator/test_linuxrbd.py +++ b/os_brick/tests/initiator/test_linuxrbd.py @@ -12,11 +12,51 @@ import mock +from os_brick import exception from os_brick.initiator import linuxrbd from os_brick.tests import base from os_brick import utils +class MockRados(object): + + class Error(Exception): + pass + + class ioctx(object): + def __init__(self, *args, **kwargs): + pass + + def __enter__(self, *args, **kwargs): + return self + + def __exit__(self, *args, **kwargs): + return False + + def close(self, *args, **kwargs): + pass + + class Rados(object): + + def __init__(self, *args, **kwargs): + pass + + def __enter__(self, *args, **kwargs): + return self + + def __exit__(self, *args, **kwargs): + return False + + def connect(self, *args, **kwargs): + pass + + def open_ioctx(self, *args, **kwargs): + return MockRados.ioctx() + + def shutdown(self, *args, **kwargs): + pass + + class RBDClientTestCase(base.TestCase): def setUp(self): @@ -46,6 +86,17 @@ class RBDClientTestCase(base.TestCase): self.assertEqual(1, mock_rados.Rados.return_value.shutdown.call_count) + @mock.patch.object(MockRados.Rados, 'connect', side_effect=MockRados.Error) + def test_with_client_error(self, _): + linuxrbd.rados = MockRados + linuxrbd.rados.Error = MockRados.Error + + def test(): + with linuxrbd.RBDClient('test_user', 'test_pool'): + pass + + self.assertRaises(exception.BrickException, test) + class RBDVolumeIOWrapperTestCase(base.TestCase):