Merge "Use a more sensible network topology for some router tests"

This commit is contained in:
Jenkins 2014-06-14 06:25:40 +00:00 committed by Gerrit Code Review
commit 76bf0bc611
4 changed files with 47 additions and 19 deletions

View File

@ -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:

View File

@ -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)

View File

@ -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'])

View File

@ -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):