Exemple #1
0
    def test_runner_with_unrecoverable_exception(self):
        resource_manager = mock.Mock(list=mock.Mock(side_effect=Exception))
        exit = mock.Mock()

        main.runner(resource_manager, mock.Mock(dry_run=True), exit)

        exit.set.assert_called_once_with()
Exemple #2
0
    def test_ensure_enabled_project(self, m_conn, m_osc):
        m_conn.Connection().get_project().is_enabled = False
        options = mock.Mock(purge_own_project=False)
        creds_manager = main.CredentialsManager(options,
                                                m_osc.OpenStackConfig())
        creds_manager.ensure_enabled_project()

        self.assertEqual(m_conn.Connection.return_value,
                         creds_manager.admin_cloud)
        self.assertEqual(m_conn.Connection().connect_as_project.return_value,
                         creds_manager.cloud)

        self.assertEqual(True, creds_manager.disable_project_after_purge)
        m_conn.Connection().connect_as_project.assert_called_once_with(
            options.purge_project)
        creds_manager.admin_cloud.update_project.assert_called_once_with(
            mock.ANY, enabled=True)

        # If project is enabled before purge, no need to disable it after
        # purge
        creds_manager = main.CredentialsManager(mock.Mock(),
                                                m_osc.OpenStackConfig())
        creds_manager.ensure_enabled_project()
        self.assertEqual(False, creds_manager.disable_project_after_purge)
        self.assertEqual(1, m_conn.Connection().update_project.call_count)
Exemple #3
0
class TestPools(unittest.TestCase):
    def setUp(self):
        self.cloud = mock.Mock(spec_set=shade.openstackcloud.OpenStackCloud)
        self.creds_manager = mock.Mock(cloud=self.cloud)
        self.client = mock.MagicMock()

    @mock.patch('ospurge.resources.octavia.getOctaviaClient', mock.Mock())
    def test_list(self):
        with mock.patch('shade.meta.get_and_munchify',
                        return_value=[{
                            'name': 'Pool1'
                        }, {
                            'name': 'Pool2'
                        }]):
            self.assertIs(shade.meta.get_and_munchify.return_value,
                          octavia.Pools(self.creds_manager).list())

    def test_delete(self):
        sg = mock.MagicMock()
        with mock.patch('ospurge.resources.octavia.getOctaviaClient',
                        return_value=self.client) as m:
            self.assertIsNone(octavia.Pools(self.creds_manager).delete(sg))
            self.client.pool_delete.assert_called_once()

    @mock.patch('ospurge.resources.octavia.getOctaviaClient', mock.Mock())
    def test_to_string(self):
        sg = mock.MagicMock()
        self.assertIn("Pool (", octavia.Pools(self.creds_manager).to_str(sg))
Exemple #4
0
    def test_wait_for_check_prerequisite_nominal(self):
        resource_manager = base.ServiceResource(mock.Mock())

        with mock.patch.object(resource_manager, 'check_prerequisite') as m:
            m.side_effect = [False, False, True]
            resource_manager.wait_for_check_prerequisite(
                mock.Mock(is_set=mock.Mock(return_value=False)))

        self.assertEqual(3, m.call_count)
Exemple #5
0
    def test_should_delete(self):
        creds_manager = mock.Mock()
        resource_manager = base.ServiceResource(creds_manager)

        resource = mock.Mock(get=mock.Mock(side_effect=[None, None]))
        self.assertEqual(True, resource_manager.should_delete(resource))
        resource.get.call_args = [mock.call('project_id'),
                                  mock.call('tenant_id')]

        resource.get.side_effect = ["Foo", "Bar"]
        self.assertEqual(False, resource_manager.should_delete(resource))

        resource.get.side_effect = [42, resource_manager.cleanup_project_id]
        self.assertEqual(True, resource_manager.should_delete(resource))
class TestVPNServices(unittest.TestCase):
    def setUp(self):
        self.cloud = mock.Mock(spec_set=shade.openstackcloud.OpenStackCloud)
        self.creds_manager = mock.Mock(cloud=self.cloud)
        self.client = mock.MagicMock()

    @mock.patch('ospurge.resources.neutron_vpnaas.getNeutronClient',
                mock.Mock())
    def test_check_prerequisite(self):
        with mock.patch('shade.meta.get_and_munchify', return_value=["conn1"]):
            self.assertEqual(
                False,
                neutron_vpnaas.VPNServices(
                    self.creds_manager).check_prerequisite())
        with mock.patch('shade.meta.get_and_munchify', return_value=[]):
            self.assertEqual(
                True,
                neutron_vpnaas.VPNServices(
                    self.creds_manager).check_prerequisite())

    @mock.patch('ospurge.resources.neutron_vpnaas.getNeutronClient',
                mock.Mock())
    def test_list(self):
        with mock.patch('shade.meta.get_and_munchify',
                        return_value=[{
                            'name': 'serv1'
                        }, {
                            'name': 'serv2'
                        }]):
            self.assertIs(
                shade.meta.get_and_munchify.return_value,
                neutron_vpnaas.VPNServices(self.creds_manager).list())

    def test_delete(self):
        sg = mock.MagicMock()
        with mock.patch('ospurge.resources.neutron_vpnaas.getNeutronClient',
                        return_value=self.client) as m:
            self.assertIsNone(
                neutron_vpnaas.VPNServices(self.creds_manager).delete(sg))
            self.client.delete_vpnservice.assert_called_once_with(sg['id'])

    @mock.patch('ospurge.resources.neutron_vpnaas.getNeutronClient',
                mock.Mock())
    def test_to_string(self):
        sg = mock.MagicMock()
        self.assertIn(
            "VPN Service (",
            neutron_vpnaas.VPNServices(self.creds_manager).to_str(sg))
Exemple #7
0
    def test_list_images_by_owner_public_images(self):
        self.cloud.list_images.return_value = [
            {
                'owner': 42,
                'is_public': True
            },
            {
                'owner': 42,
                'visibility': 'public'
            },
        ]
        with mock.patch.object(self.img_lister, 'options',
                               mock.Mock(delete_shared_resources=True)):
            self.assertEqual(self.cloud.list_images.return_value,
                             self.img_lister.list_images_by_owner())

        with mock.patch.object(self.img_lister, 'options',
                               mock.Mock(delete_shared_resources=False)):
            self.assertEqual([], self.img_lister.list_images_by_owner())
Exemple #8
0
    def test_monkeypatch_oscc_logging_warning(self, mock_getLogger):
        oscc_target = 'os_client_config.cloud_config'
        m_oscc_logger, m_other_logger = mock.Mock(), mock.Mock()

        mock_getLogger.side_effect = \
            lambda m: m_oscc_logger if m == oscc_target else m_other_logger

        @utils.monkeypatch_oscc_logging_warning
        def f():
            logging.getLogger(oscc_target).warning("foo")
            logging.getLogger(oscc_target).warning("!catalog entry not found!")
            logging.getLogger("other").warning("!catalog entry not found!")

        f()

        self.assertEqual([
            mock.call.warning('foo'),
        ], m_oscc_logger.mock_calls)
        self.assertEqual([mock.call.warning('!catalog entry not found!')],
                         m_other_logger.mock_calls)
Exemple #9
0
    def test_call_and_ignore_notfound(self):
        def raiser():
            raise os_exceptions.OpenStackCloudException("")

        self.assertIsNone(
            utils.call_and_ignore_exc(os_exceptions.OpenStackCloudException,
                                      raiser))

        m = mock.Mock()
        utils.call_and_ignore_exc(os_exceptions.OpenStackCloudException, m, 42)
        self.assertEqual([mock.call(42)], m.call_args_list)
Exemple #10
0
class TestListeners(unittest.TestCase):
    def setUp(self):
        self.cloud = mock.Mock(spec_set=shade.openstackcloud.OpenStackCloud)
        self.creds_manager = mock.Mock(cloud=self.cloud)
        self.client = mock.MagicMock()

    @mock.patch('ospurge.resources.octavia.getOctaviaClient', mock.Mock())
    def test_check_prerequisite(self):
        with mock.patch('shade.meta.get_and_munchify',
                        return_value=["Listener1"]):
            self.assertEqual(
                False,
                octavia.Listeners(self.creds_manager).check_prerequisite())
        with mock.patch('shade.meta.get_and_munchify', return_value=[]):
            self.assertEqual(
                True,
                octavia.Listeners(self.creds_manager).check_prerequisite())

    @mock.patch('ospurge.resources.octavia.getOctaviaClient', mock.Mock())
    def test_list(self):
        with mock.patch('shade.meta.get_and_munchify',
                        return_value=[{
                            'name': 'Listener1'
                        }, {
                            'name': 'Listener2'
                        }]):
            self.assertIs(shade.meta.get_and_munchify.return_value,
                          octavia.Listeners(self.creds_manager).list())

    def test_delete(self):
        sg = mock.MagicMock()
        with mock.patch('ospurge.resources.octavia.getOctaviaClient',
                        return_value=self.client) as m:
            self.assertIsNone(octavia.Listeners(self.creds_manager).delete(sg))
            self.client.listener_delete.assert_called_once()

    @mock.patch('ospurge.resources.octavia.getOctaviaClient', mock.Mock())
    def test_to_string(self):
        sg = mock.MagicMock()
        self.assertIn("Listener (",
                      octavia.Listeners(self.creds_manager).to_str(sg))
Exemple #11
0
    def test_call_and_ignore_notfound(self):
        def raiser():
            raise shade.exc.OpenStackCloudResourceNotFound("")

        self.assertIsNone(
            utils.call_and_ignore_exc(shade.exc.OpenStackCloudResourceNotFound,
                                      raiser))

        m = mock.Mock()
        utils.call_and_ignore_exc(shade.exc.OpenStackCloudResourceNotFound, m,
                                  42)
        self.assertEqual([mock.call(42)], m.call_args_list)
Exemple #12
0
    def test_runner_delete_dry_run(self):
        resources = [mock.Mock(), mock.Mock()]
        resource_manager = mock.Mock(list=mock.Mock(return_value=resources))
        options = mock.Mock(dry_run=True, disable_only=False)
        exit = mock.Mock(is_set=mock.Mock(return_value=False))

        main.runner(resource_manager, options, exit)

        resource_manager.wait_for_check_prerequisite.assert_not_called()
        resource_manager.delete.assert_not_called()
Exemple #13
0
class TestNetworks(unittest.TestCase):
    def setUp(self):
        self.cloud = mock.Mock(spec_set=shade.openstackcloud.OpenStackCloud)
        self.creds_manager = mock.Mock(cloud=self.cloud)

    @mock.patch('ospurge.resources.neutron.getNeutronClient', mock.Mock())
    def test_check_prerequisite(self):
        with mock.patch('shade.meta.get_and_munchify', return_value=[]):
            self.cloud.list_ports.return_value = [{
                'device_owner':
                'network:dhcp'
            }]
            self.assertEqual(
                True,
                neutron.Networks(self.creds_manager).check_prerequisite())

            self.cloud.list_ports.return_value = [{
                'device_owner':
                'compute:None'
            }]
            self.assertEqual(
                False,
                neutron.Networks(self.creds_manager).check_prerequisite())

            self.cloud.list_ports.assert_called_with(
                filters={'tenant_id': self.creds_manager.project_id})

    def test_list(self):
        self.creds_manager.options.delete_shared_resources = False
        self.cloud.list_networks.return_value = [{
            'router:external': True
        }, {
            'router:external': True
        }]
        nw_list = neutron.Networks(self.creds_manager).list()
        self.assertEqual(0, len(nw_list))

        self.creds_manager.options.delete_shared_resources = True
        nw_list = neutron.Networks(self.creds_manager).list()
        self.assertEqual(2, len(nw_list))

        self.cloud.list_networks.assert_called_with(
            filters={'tenant_id': self.creds_manager.project_id})

    def test_delete(self):
        nw = mock.MagicMock()
        self.assertIsNone(neutron.Networks(self.creds_manager).delete(nw))
        self.cloud.delete_network.assert_called_once_with(nw['id'])

    def test_to_string(self):
        nw = mock.MagicMock()
        self.assertIn("Network (",
                      neutron.Networks(self.creds_manager).to_str(nw))
Exemple #14
0
    def test_runner_disable_dry_run(self):
        resources = [mock.Mock(), mock.Mock(), mock.Mock()]
        resource_manager = mock.Mock(list=mock.Mock(return_value=resources))
        options = mock.Mock(dry_run=True, resource=False, disable_only=True)
        exit = mock.Mock(is_set=mock.Mock(side_effect=[False, False, True]))

        main.runner(resource_manager, options, exit)

        resource_manager.list.assert_called_once_with()
        resource_manager.wait_for_check_prerequisite.assert_not_called()
        resource_manager.should_delete.assert_not_called()
        resource_manager.delete.assert_not_called()
        resource_manager.disable.assert_not_called()
        resource_manager.assert_not_called()
Exemple #15
0
    def test_wait_for_check_prerequisite_runtimeerror(self,
                                                      mock_check_prerequisite,
                                                      mock_sleep):
        resource_manager = base.ServiceResource(mock.Mock())
        mock_exit = mock.Mock(is_set=mock.Mock(return_value=False))

        with mock.patch('time.time') as mock_time:
            mock_time.side_effect = generate_timeout_series(675)
            self.assertRaisesRegex(
                exceptions.TimeoutError, "^Timeout exceeded .*",
                resource_manager.wait_for_check_prerequisite, mock_exit)
        self.assertEqual(mock_check_prerequisite.call_args_list,
                         [mock.call()] * (2700 // 675 - 1))
        self.assertEqual(mock_sleep.call_args_list,
                         [mock.call(i) for i in (2, 4, 8)])

        mock_sleep.reset_mock()
        mock_check_prerequisite.reset_mock()
        mock_exit.is_set.return_value = True
        self.assertRaisesRegex(RuntimeError,
                               ".* exited because it was interrupted .*",
                               resource_manager.wait_for_check_prerequisite,
                               mock_exit)
Exemple #16
0
    def test_ensure_role_on_project(self, m_conn, m_osc):
        options = mock.Mock(purge_own_project=False)
        config = m_osc.OpenStackConfig()
        creds_manager = main.CredentialsManager(options, config)
        creds_manager.ensure_role_on_project()

        self.assertEqual(m_conn.Connection.return_value,
                         creds_manager.admin_cloud)
        self.assertEqual(m_conn.Connection().connect_as_project.return_value,
                         creds_manager.cloud)

        creds_manager.admin_cloud.grant_role.assert_called_once_with(
            options.admin_role_name,
            project=options.purge_project,
            user=mock.ANY)
        self.assertEqual(True, creds_manager.revoke_role_after_purge)

        # If purge_own_project is not False, we purge our own project
        # so no need to revoke role after purge
        creds_manager = main.CredentialsManager(mock.Mock(),
                                                m_osc.OpenStackConfig())
        creds_manager.ensure_role_on_project()
        self.assertEqual(False, creds_manager.revoke_role_after_purge)
Exemple #17
0
    def test_init_without_order_attr(self):
        class Foo5(base.ServiceResource):
            def list(self):
                pass

            def delete(self, resource):
                pass

            @staticmethod
            def to_str(resource):
                pass

        self.assertRaisesRegex(ValueError, 'Class .*ORDER.*',
                               Foo5, mock.Mock())
Exemple #18
0
    def test_instantiate_nominal(self):
        creds_manager = mock.Mock()
        resource_manager = base.ServiceResource(creds_manager)

        self.assertEqual(resource_manager.cloud, creds_manager.cloud)
        self.assertEqual(resource_manager.options, creds_manager.options)
        self.assertEqual(resource_manager.cleanup_project_id,
                         creds_manager.project_id)

        self.assertEqual(12, resource_manager.order())
        self.assertEqual(True, resource_manager.check_prerequisite())

        self.assertRaises(NotImplementedError, resource_manager.delete, '')
        self.assertRaises(NotImplementedError, resource_manager.to_str, '')
        self.assertRaises(NotImplementedError, resource_manager.list)
class TestIpSecSiteConnections(unittest.TestCase):
    def setUp(self):
        self.cloud = mock.Mock(spec_set=shade.openstackcloud.OpenStackCloud)
        self.creds_manager = mock.Mock(cloud=self.cloud)
        self.client = mock.MagicMock()

    @mock.patch('ospurge.resources.neutron_vpnaas.getNeutronClient',
                mock.Mock())
    def test_list(self):
        with mock.patch('shade.meta.get_and_munchify',
                        return_value=[{
                            'name': 'conn1'
                        }, {
                            'name': 'conn2'
                        }]):
            self.assertIs(
                shade.meta.get_and_munchify.return_value,
                neutron_vpnaas.IpSecSiteConnections(self.creds_manager).list())

    def test_delete(self):
        sg = mock.MagicMock()
        with mock.patch('ospurge.resources.neutron_vpnaas.getNeutronClient',
                        return_value=self.client) as m:
            self.assertIsNone(
                neutron_vpnaas.IpSecSiteConnections(
                    self.creds_manager).delete(sg))
            self.client.delete_ipsec_site_connection.assert_called_once_with(
                sg['id'])

    @mock.patch('ospurge.resources.neutron_vpnaas.getNeutronClient',
                mock.Mock())
    def test_to_string(self):
        sg = mock.MagicMock()
        self.assertIn(
            "IPSec Site Connection (",
            neutron_vpnaas.IpSecSiteConnections(self.creds_manager).to_str(sg))
Exemple #20
0
    def test_disable_project(self, m_conn, m_osc):
        options = mock.Mock(purge_own_project=False)
        config = m_osc.OpenStackConfig()
        creds_manager = main.CredentialsManager(options, config)
        creds_manager.disable_project()

        self.assertEqual(m_conn.Connection.return_value,
                         creds_manager.admin_cloud)
        self.assertEqual(m_conn.Connection().connect_as_project.return_value,
                         creds_manager.cloud)

        m_conn.Connection().connect_as_project.assert_called_once_with(
            options.purge_project)
        m_conn.Connection().update_project.assert_called_once_with(
            mock.ANY, enabled=False)
Exemple #21
0
    def test_revoke_role_on_project(self, m_conn, m_osc):
        options = mock.Mock(purge_own_project=False)
        config = m_osc.OpenStackConfig()
        creds_manager = main.CredentialsManager(options, config)
        creds_manager.revoke_role_on_project()

        self.assertEqual(m_conn.Connection.return_value,
                         creds_manager.admin_cloud)
        self.assertEqual(m_conn.Connection().connect_as_project.return_value,
                         creds_manager.cloud)

        creds_manager.admin_cloud.revoke_role.assert_called_once_with(
            options.admin_role_name,
            project=options.purge_project,
            user=mock.ANY)
Exemple #22
0
    def test_runner_delete(self):
        resources = [mock.Mock(), mock.Mock(), mock.Mock()]
        resource_manager = mock.Mock(list=mock.Mock(return_value=resources))
        options = mock.Mock(dry_run=False, resource=False, disable_only=False)
        exit = mock.Mock(is_set=mock.Mock(side_effect=[False, False, True]))

        main.runner(resource_manager, options, exit)

        resource_manager.list.assert_called_once_with()
        resource_manager.wait_for_check_prerequisite.assert_called_once_with(
            exit)
        self.assertEqual([mock.call(resources[0]),
                          mock.call(resources[1])],
                         resource_manager.should_delete.call_args_list)
        self.assertEqual(2, resource_manager.delete.call_count)
        self.assertEqual([mock.call(resources[0]),
                          mock.call(resources[1])],
                         resource_manager.delete.call_args_list)
Exemple #23
0
    def test_runner_with_recoverable_exception(self):
        class MyEndpointNotFound(Exception):
            pass

        exc = os_exceptions.OpenStackCloudException("")
        exc.inner_exception = (MyEndpointNotFound, )
        resource_manager = mock.Mock(list=mock.Mock(side_effect=exc))
        exit = mock.Mock()

        main.runner(resource_manager, mock.Mock(dry_run=True), exit)
        self.assertEqual(1, resource_manager.list.call_count)
        self.assertFalse(exit.set.called)

        resource_manager = mock.Mock(list=mock.Mock(
            side_effect=MyEndpointNotFound))
        main.runner(resource_manager, mock.Mock(dry_run=True), exit)
        self.assertEqual(1, resource_manager.list.call_count)
        self.assertFalse(exit.set.called)
Exemple #24
0
 def setUp(self):
     self.cloud = mock.Mock(spec_set=shade.openstackcloud.OpenStackCloud)
     self.creds_manager = mock.Mock(cloud=self.cloud)
Exemple #25
0
 def setUp(self):
     self.cloud = mock.Mock(spec_set=openstack.connection.Connection)
     self.creds_manager = mock.Mock(cloud=self.cloud)
Exemple #26
0
 def setUp(self):
     self.cloud = mock.Mock(spec_set=openstack.connection.Connection)
     self.obj_lister = swift.ListObjectsMixin()
     self.obj_lister.cloud = self.cloud
Exemple #27
0
 def setUp(self):
     self.cloud = mock.Mock(spec_set=openstack.connection.Connection)
     self.img_lister = glance.ListImagesMixin()
     self.img_lister.cloud = self.cloud
     self.img_lister.cleanup_project_id = 42
     self.img_lister.options = None
Exemple #28
0
    """
    iteration = 0
    while True:
        iteration += 1
        yield (iteration * timeout) + iteration


class SignatureMismatch(Exception):
    pass


class WrongMethodDefOrder(Exception):
    pass


@mock.patch('logging.warning', mock.Mock(side_effect=SignatureMismatch))
class TestMatchSignaturesMeta(unittest.TestCase):
    class Test(six.with_metaclass(base.MatchSignaturesMeta)):
        def a(self, arg1):
            pass

        def b(self, arg1=True):
            pass

        def c(self, arg1, arg2):
            pass

        def _private(self):
            pass

    def test_nominal(self):
Exemple #29
0
class TestServiceResource(unittest.TestCase):
    def test_init_without_order_attr(self):
        class Foo5(base.ServiceResource):
            def list(self):
                pass

            def delete(self, resource):
                pass

            @staticmethod
            def to_str(resource):
                pass

        self.assertRaisesRegex(ValueError, 'Class .*ORDER.*',
                               Foo5, mock.Mock())

    def test_instantiate_without_concrete_methods(self):
        class Foo6(base.ServiceResource):
            ORDER = 1

        self.assertRaises(TypeError, Foo6)

    @mock.patch.multiple(base.ServiceResource, ORDER=12,
                         __abstractmethods__=set())
    def test_instantiate_nominal(self):
        creds_manager = mock.Mock()
        resource_manager = base.ServiceResource(creds_manager)

        self.assertEqual(resource_manager.cloud, creds_manager.cloud)
        self.assertEqual(resource_manager.options, creds_manager.options)
        self.assertEqual(resource_manager.cleanup_project_id,
                         creds_manager.project_id)

        self.assertEqual(12, resource_manager.order())
        self.assertEqual(True, resource_manager.check_prerequisite())

        self.assertRaises(NotImplementedError, resource_manager.delete, '')
        self.assertRaises(NotImplementedError, resource_manager.to_str, '')
        self.assertRaises(NotImplementedError, resource_manager.list)

    @mock.patch.multiple(base.ServiceResource, ORDER=12,
                         __abstractmethods__=set())
    def test_should_delete(self):
        creds_manager = mock.Mock()
        resource_manager = base.ServiceResource(creds_manager)

        resource = mock.Mock(get=mock.Mock(side_effect=[None, None]))
        self.assertEqual(True, resource_manager.should_delete(resource))
        resource.get.call_args = [mock.call('project_id'),
                                  mock.call('tenant_id')]

        resource.get.side_effect = ["Foo", "Bar"]
        self.assertEqual(False, resource_manager.should_delete(resource))

        resource.get.side_effect = [42, resource_manager.cleanup_project_id]
        self.assertEqual(True, resource_manager.should_delete(resource))

    @mock.patch('time.sleep', autospec=True)
    @mock.patch.multiple(base.ServiceResource, ORDER=12,
                         __abstractmethods__=set())
    @mock.patch.object(base.ServiceResource, 'check_prerequisite',
                       return_value=False)
    def test_wait_for_check_prerequisite_runtimeerror(
            self, mock_check_prerequisite, mock_sleep):
        resource_manager = base.ServiceResource(mock.Mock())
        mock_exit = mock.Mock(is_set=mock.Mock(return_value=False))

        with mock.patch('time.time') as mock_time:
            mock_time.side_effect = generate_timeout_series(30)
            self.assertRaisesRegex(
                exceptions.TimeoutError, "^Timeout exceeded .*",
                resource_manager.wait_for_check_prerequisite, mock_exit
            )

        self.assertEqual(mock_check_prerequisite.call_args_list,
                         [mock.call()] * (120 // 30 - 1))
        self.assertEqual(mock_sleep.call_args_list,
                         [mock.call(i) for i in (2, 4, 8)])

        mock_sleep.reset_mock()
        mock_check_prerequisite.reset_mock()
        mock_exit.is_set.return_value = True
        self.assertRaisesRegex(
            RuntimeError, ".* exited because it was interrupted .*",
            resource_manager.wait_for_check_prerequisite, mock_exit
        )

    @mock.patch('time.sleep', mock.Mock(spec_set=time.sleep))
    @mock.patch.multiple(base.ServiceResource, ORDER=12,
                         __abstractmethods__=set())
    def test_wait_for_check_prerequisite_nominal(self):
        resource_manager = base.ServiceResource(mock.Mock())

        with mock.patch.object(resource_manager, 'check_prerequisite') as m:
            m.side_effect = [False, False, True]
            resource_manager.wait_for_check_prerequisite(
                mock.Mock(is_set=mock.Mock(return_value=False)))

        self.assertEqual(3, m.call_count)
Exemple #30
0
 def test_init_with_project_not_found(self, m_conn, m_osc):
     m_conn.Connection().get_project.return_value = None
     self.assertRaises(exceptions.OSProjectNotFound,
                       main.CredentialsManager,
                       mock.Mock(purge_own_project=False),
                       m_osc.OpenStackConfig())