Merge "Use a more sensible network topology for some router tests"
This commit is contained in:
commit
76bf0bc611
@ -149,15 +149,16 @@ class BaseNetworkTest(tempest.test.BaseTestCase):
|
||||
return network
|
||||
|
||||
@classmethod
|
||||
def create_subnet(cls, network, gateway=None):
|
||||
def create_subnet(cls, network, gateway=None, cidr=None, mask_bits=None):
|
||||
"""Wrapper utility that returns a test subnet."""
|
||||
# The cidr and mask_bits depend on the ip version.
|
||||
if cls._ip_version == 4:
|
||||
cidr = netaddr.IPNetwork(CONF.network.tenant_network_cidr)
|
||||
mask_bits = CONF.network.tenant_network_mask_bits
|
||||
cidr = cidr or netaddr.IPNetwork(CONF.network.tenant_network_cidr)
|
||||
mask_bits = mask_bits or CONF.network.tenant_network_mask_bits
|
||||
elif cls._ip_version == 6:
|
||||
cidr = netaddr.IPNetwork(CONF.network.tenant_network_v6_cidr)
|
||||
mask_bits = CONF.network.tenant_network_v6_mask_bits
|
||||
cidr = (
|
||||
cidr or netaddr.IPNetwork(CONF.network.tenant_network_v6_cidr))
|
||||
mask_bits = mask_bits or CONF.network.tenant_network_v6_mask_bits
|
||||
# Find a cidr that is not in use yet and create a subnet with it
|
||||
for subnet_cidr in cidr.subnet(mask_bits):
|
||||
if not gateway:
|
||||
|
@ -37,6 +37,15 @@ class BaseRouterTest(base.BaseAdminNetworkTest):
|
||||
routers_list.append(router['id'])
|
||||
self.assertNotIn(router_id, routers_list)
|
||||
|
||||
def _add_router_interface_with_subnet_id(self, router_id, subnet_id):
|
||||
resp, interface = self.client.add_router_interface_with_subnet_id(
|
||||
router_id, subnet_id)
|
||||
self.assertEqual('200', resp['status'])
|
||||
self.addCleanup(self._remove_router_interface_with_subnet_id,
|
||||
router_id, subnet_id)
|
||||
self.assertEqual(subnet_id, interface['subnet_id'])
|
||||
return interface
|
||||
|
||||
def _remove_router_interface_with_subnet_id(self, router_id, subnet_id):
|
||||
resp, body = self.client.remove_router_interface_with_subnet_id(
|
||||
router_id, subnet_id)
|
||||
|
@ -300,9 +300,13 @@ class RoutersTest(base.BaseRouterTest):
|
||||
|
||||
@test.attr(type='smoke')
|
||||
def test_add_multiple_router_interfaces(self):
|
||||
network = self.create_network()
|
||||
subnet01 = self.create_subnet(network)
|
||||
subnet02 = self.create_subnet(network)
|
||||
network01 = self.create_network(
|
||||
network_name=data_utils.rand_name('router-network01-'))
|
||||
network02 = self.create_network(
|
||||
network_name=data_utils.rand_name('router-network02-'))
|
||||
subnet01 = self.create_subnet(network01)
|
||||
sub02_cidr = netaddr.IPNetwork(CONF.network.tenant_network_cidr).next()
|
||||
subnet02 = self.create_subnet(network02, cidr=sub02_cidr)
|
||||
router = self._create_router(data_utils.rand_name('router-'))
|
||||
interface01 = self._add_router_interface_with_subnet_id(router['id'],
|
||||
subnet01['id'])
|
||||
@ -313,15 +317,6 @@ class RoutersTest(base.BaseRouterTest):
|
||||
self._verify_router_interface(router['id'], subnet02['id'],
|
||||
interface02['port_id'])
|
||||
|
||||
def _add_router_interface_with_subnet_id(self, router_id, subnet_id):
|
||||
resp, interface = self.client.add_router_interface_with_subnet_id(
|
||||
router_id, subnet_id)
|
||||
self.assertEqual('200', resp['status'])
|
||||
self.addCleanup(self._remove_router_interface_with_subnet_id,
|
||||
router_id, subnet_id)
|
||||
self.assertEqual(subnet_id, interface['subnet_id'])
|
||||
return interface
|
||||
|
||||
def _verify_router_interface(self, router_id, subnet_id, port_id):
|
||||
resp, show_port_body = self.client.show_port(port_id)
|
||||
self.assertEqual('200', resp['status'])
|
||||
|
@ -13,11 +13,16 @@
|
||||
# License for the specific language governing permissions and limitations
|
||||
# under the License.
|
||||
|
||||
import netaddr
|
||||
|
||||
from tempest.api.network import base_routers as base
|
||||
from tempest.common.utils import data_utils
|
||||
from tempest import config
|
||||
from tempest import exceptions
|
||||
from tempest import test
|
||||
|
||||
CONF = config.CONF
|
||||
|
||||
|
||||
class RoutersNegativeTest(base.BaseRouterTest):
|
||||
_interface = 'json'
|
||||
@ -43,12 +48,30 @@ class RoutersNegativeTest(base.BaseRouterTest):
|
||||
|
||||
@test.attr(type=['negative', 'smoke'])
|
||||
def test_router_add_gateway_net_not_external_returns_400(self):
|
||||
self.create_subnet(self.network)
|
||||
alt_network = self.create_network(
|
||||
network_name=data_utils.rand_name('router-negative-'))
|
||||
sub_cidr = netaddr.IPNetwork(CONF.network.tenant_network_cidr).next()
|
||||
self.create_subnet(alt_network, cidr=sub_cidr)
|
||||
self.assertRaises(exceptions.BadRequest,
|
||||
self.client.update_router,
|
||||
self.router['id'],
|
||||
external_gateway_info={
|
||||
'network_id': self.network['id']})
|
||||
'network_id': alt_network['id']})
|
||||
|
||||
@test.attr(type=['negative', 'smoke'])
|
||||
def test_add_router_interfaces_on_overlapping_subnets_returns_400(self):
|
||||
network01 = self.create_network(
|
||||
network_name=data_utils.rand_name('router-network01-'))
|
||||
network02 = self.create_network(
|
||||
network_name=data_utils.rand_name('router-network02-'))
|
||||
subnet01 = self.create_subnet(network01)
|
||||
subnet02 = self.create_subnet(network02)
|
||||
self._add_router_interface_with_subnet_id(self.router['id'],
|
||||
subnet01['id'])
|
||||
self.assertRaises(exceptions.BadRequest,
|
||||
self._add_router_interface_with_subnet_id,
|
||||
self.router['id'],
|
||||
subnet02['id'])
|
||||
|
||||
@test.attr(type=['negative', 'smoke'])
|
||||
def test_router_remove_interface_in_use_returns_409(self):
|
||||
|
Loading…
Reference in New Issue
Block a user