Exemplo n.º 1
0
 def test_purge_command_fk_constraint_failure(self, purge_deleted_rows):
     purge_deleted_rows.side_effect = db_exception.DBReferenceError(
         'fake_table', 'fake_constraint', 'fake_key', 'fake_key_table')
     exit = self.assertRaises(SystemExit, self.commands.purge, 10, 100)
     self.assertEqual(
         "Purge command failed, check glance-manage logs"
         " for more details.", exit.code)
 def test__allocate_hosting_port_returns_none_if_binding_fails(self):
     with self.router() as r, self.port() as p1:
         r_id = r['router']['id']
         p1_id = p1['port']['id']
         self._router_interface_action('add', r_id, None, p1_id)
         plugging_drv_mock = mock.MagicMock()
         plugging_drv_mock.allocate_hosting_port.return_value = {
             'allocated_port_id': p1_id,
             'allocated_vlan': 10
         }
         adm_ctx = bc.context.get_admin_context()
         p1_db = self._core_plugin._get_port(adm_ctx, p1_id)
         ctx_mock = mock.MagicMock()
         ctx_mock.session = mock.MagicMock()
         ctx_mock.session.begin = adm_ctx.session.begin
         ctx_mock.session.add = mock.MagicMock()
         ctx_mock.session.add.side_effect = db_exc.DBReferenceError(
             'cisco_port_mappings',
             'foreign key constraint',
             p1_id,
             'ports',
             inner_exception=inner_db_exc.IntegrityError("Invalid insert",
                                                         params="",
                                                         orig=None))
         res = self.l3_plugin._allocate_hosting_port(
             ctx_mock, r_id, p1_db, 'fake_hd_id', plugging_drv_mock)
         self.assertIsNone(res)
Exemplo n.º 3
0
 def test_set_port_status_concurrent_delete(self):
     exc = os_db_exc.DBReferenceError('', '', '', '')
     with self.network(set_context=True, tenant_id='test') as net1, \
         self.subnet(network=net1) as subnet1, \
         self.port(subnet=subnet1, set_context=True,
                   tenant_id='test') as port1, \
         mock.patch('neutron.db.provisioning_blocks.'
                    'add_provisioning_component',
                    side_effect=exc) as apc:
         self.mech_driver.set_port_status_down(port1['port']['id'])
         apc.assert_called_once_with(mock.ANY, port1['port']['id'],
                                     resources.PORT,
                                     provisioning_blocks.L2_AGENT_ENTITY)
    def test_save_fkey_constraint_fail(self, mock_update):
        fake_updated_at = datetime.datetime(2015, 1, 1)
        nwinfo = network_model.NetworkInfo.hydrate([{'address': 'foo'}])
        nwinfo_json = nwinfo.json()
        new_info_cache = fake_info_cache.copy()
        new_info_cache['id'] = 1
        new_info_cache['updated_at'] = fake_updated_at
        new_info_cache['network_info'] = nwinfo_json

        # We should see InstanceNotFound raised for fkey=instance_uuid
        mock_update.side_effect = db_exc.DBReferenceError(
            'table', 'constraint', 'instance_uuid', 'key_table')

        obj = instance_info_cache.InstanceInfoCache(context=self.context)
        obj.instance_uuid = uuids.info_instance
        obj.network_info = nwinfo_json
        self.assertRaises(exception.InstanceNotFound, obj.save)

        # We should see the original exception raised for any other fkey
        mock_update.side_effect = db_exc.DBReferenceError(
            'table', 'constraint', 'otherkey', 'key_table')
        self.assertRaises(db_exc.DBReferenceError, obj.save)
Exemplo n.º 5
0
    def _test_save_objectfield_fk_constraint_fails(self, foreign_key,
                                                   expected_exception):

        error = db_exc.DBReferenceError('table', 'constraint', foreign_key,
                                        'key_table')
        # Prevent lazy-loading any fields, results in InstanceNotFound
        deployable = fake_deployable.fake_deployable_obj(self.context)
        fields_with_save_methods = [field for field in deployable.fields
                                    if hasattr(deployable, '_save_%s' % field)]
        for field in fields_with_save_methods:
            @mock.patch.object(deployable, '_save_%s' % field)
            @mock.patch.object(deployable, 'obj_attr_is_set')
            def _test(mock_is_set, mock_save_field):
                mock_is_set.return_value = True
                mock_save_field.side_effect = error
                deployable.obj_reset_changes(fields=[field])
                deployable._changed_fields.add(field)
                self.assertRaises(expected_exception, deployable.save)
                deployable.obj_reset_changes(fields=[field])
            _test()
Exemplo n.º 6
0
def _foreign_key_error(integrity_error, match, engine_name, is_disconnect):
    """Filter for foreign key errors."""

    try:
        table = match.group("table")
    except IndexError:
        table = None
    try:
        constraint = match.group("constraint")
    except IndexError:
        constraint = None
    try:
        key = match.group("key")
    except IndexError:
        key = None
    try:
        key_table = match.group("key_table")
    except IndexError:
        key_table = None

    raise exception.DBReferenceError(table, constraint, key, key_table,
                                     integrity_error)
Exemplo n.º 7
0
def _raise_DBReferenceError(*args, **kwargs):
    args = [mock.Mock(unsafe=True)] * 4
    e = exception.DBReferenceError(*args)
    raise e
Exemplo n.º 8
0
 def test_create_port_catch_db_reference_error(self):
     self._test__port_action_with_failures(exc=db_exc.DBReferenceError(
         'a', 'b', 'c', 'd'),
                                           action='create_port')