From: YAMAMOTO Takashi Date: Fri, 3 Jul 2015 14:59:46 +0000 (+0900) Subject: test_db_base_plugin_v2: Improve DBReferenceError generation X-Git-Url: https://review.fuel-infra.org/gitweb?a=commitdiff_plain;h=5874a36fb57d857671a5d32016b323d22867bb2c;p=openstack-build%2Fneutron-build.git test_db_base_plugin_v2: Improve DBReferenceError generation The current coding, raising DBReferenceError directly, seems to confuse sqlalchemy a bit. Instead, actually causes the error by tweaking the row being inserted. Change-Id: I17ec6dab19b0e573675559042b7529f7bdd2671b --- diff --git a/neutron/tests/unit/db/test_db_base_plugin_v2.py b/neutron/tests/unit/db/test_db_base_plugin_v2.py index 1a2a9bdca..a87810d50 100644 --- a/neutron/tests/unit/db/test_db_base_plugin_v2.py +++ b/neutron/tests/unit/db/test_db_base_plugin_v2.py @@ -20,7 +20,6 @@ import itertools import mock import netaddr from oslo_config import cfg -from oslo_db import exception as db_exc from oslo_utils import importutils import six from sqlalchemy import orm @@ -3809,16 +3808,18 @@ class TestSubnetsV2(NeutronDbPluginV2TestCase): self.subnet(network=network) as v4_subnet,\ self.port(subnet=v4_subnet, device_owner=device_owner) as port: if insert_db_reference_error: - orig = orm.Session.add + orig_fn = orm.Session.add def db_ref_err_for_ipalloc(s, instance): if instance.__class__.__name__ == 'IPAllocation': - raise db_exc.DBReferenceError( - 'dummy_table', 'dummy_constraint', - 'dummy_key', 'dummy_key_table') - return orig(s, instance) + # tweak port_id to cause a FK violation, + # thus DBReferenceError + instance.port_id = 'nonexistent' + return orig_fn(s, instance) + mock.patch.object(orm.Session, 'add', - new=db_ref_err_for_ipalloc).start() + side_effect=db_ref_err_for_ipalloc, + autospec=True).start() mock.patch.object(db_base_plugin_common.DbBasePluginCommon, '_get_subnet', return_value=mock.Mock()).start()