Creating scale number of static routes on a single routes and updating the set in a repetetive cycle.
Modified: appliance_manager.py Added: test_static_routes_uni_dimensional.py Change-Id: I843f2cf33f38b3b48d7419ff5f7fe8bc6953c5a8
This commit is contained in:
parent
0fb134a1ca
commit
cb68cce000
@ -666,3 +666,35 @@ class ApplianceManager(manager.NetworkScenarioTest):
|
|||||||
subnetpool_client.delete_subnetpool,
|
subnetpool_client.delete_subnetpool,
|
||||||
subnetpool_id)
|
subnetpool_id)
|
||||||
return body
|
return body
|
||||||
|
|
||||||
|
def _create_topo_single_network(self, namestart, create_instance=True,
|
||||||
|
set_gateway=True, cidr=None, clean_up=True,
|
||||||
|
**kwargs):
|
||||||
|
"""
|
||||||
|
Create Topo where 1 logical switches which is
|
||||||
|
connected via tier-1 router.
|
||||||
|
"""
|
||||||
|
rtr_name = data_utils.rand_name(name='tempest-uni-router')
|
||||||
|
network_name = data_utils.rand_name(name='tempest-uni-net')
|
||||||
|
subnet_name = data_utils.rand_name(name='tempest-uni-subnet')
|
||||||
|
router_state = self.create_topology_router(rtr_name,
|
||||||
|
set_gateway=set_gateway,
|
||||||
|
clean_up=clean_up,
|
||||||
|
**kwargs)
|
||||||
|
network_state = self.create_topology_network(network_name,
|
||||||
|
clean_up=clean_up)
|
||||||
|
subnet_state = self.create_topology_subnet(
|
||||||
|
subnet_name, network_state, router_id=router_state["id"],
|
||||||
|
cidr=cidr, clean_up=clean_up)
|
||||||
|
if create_instance:
|
||||||
|
image_id = self.get_glance_image_id(["cirros", "esx"])
|
||||||
|
self.create_topology_instance(
|
||||||
|
"state_vm_1", [network_state],
|
||||||
|
create_floating_ip=True, image_id=image_id, clean_up=clean_up)
|
||||||
|
self.create_topology_instance(
|
||||||
|
"state_vm_2", [network_state],
|
||||||
|
create_floating_ip=True, image_id=image_id, clean_up=clean_up)
|
||||||
|
topology_dict = dict(router_state=router_state,
|
||||||
|
network_state=network_state,
|
||||||
|
subnet_state=subnet_state)
|
||||||
|
return topology_dict
|
||||||
|
@ -0,0 +1,196 @@
|
|||||||
|
# Copyright 2020 VMware Inc
|
||||||
|
# All Rights Reserved
|
||||||
|
#
|
||||||
|
# Licensed under the Apache License, Version 2.0 (the "License"); you may
|
||||||
|
# not use this file except in compliance with the License. You may obtain
|
||||||
|
# a copy of the License at
|
||||||
|
#
|
||||||
|
# http://www.apache.org/licenses/LICENSE-2.0
|
||||||
|
#
|
||||||
|
# Unless required by applicable law or agreed to in writing, software
|
||||||
|
# distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
|
||||||
|
# WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
|
||||||
|
# License for the specific language governing permissions and limitations
|
||||||
|
# under the License.
|
||||||
|
|
||||||
|
import ipaddress
|
||||||
|
import random
|
||||||
|
import re
|
||||||
|
|
||||||
|
from tempest import config
|
||||||
|
from tempest.lib import decorators
|
||||||
|
from vmware_nsx_tempest_plugin.lib import feature_manager
|
||||||
|
from vmware_nsx_tempest_plugin.services import nsxv3_client
|
||||||
|
from vmware_nsx_tempest_plugin.services import nsxv_client
|
||||||
|
|
||||||
|
from oslo_log import log as logging
|
||||||
|
|
||||||
|
CONF = config.CONF
|
||||||
|
LOG = logging.getLogger(__name__)
|
||||||
|
|
||||||
|
|
||||||
|
class StaticRoutesUniDimensionalTest(feature_manager.FeatureManager):
|
||||||
|
|
||||||
|
"""Test Uni Dimesional Case for
|
||||||
|
Logical-security-groups
|
||||||
|
Logical-security-group-rules
|
||||||
|
|
||||||
|
"""
|
||||||
|
@classmethod
|
||||||
|
def setup_clients(cls):
|
||||||
|
super(StaticRoutesUniDimensionalTest, cls).setup_clients()
|
||||||
|
cls.cmgr_adm = cls.get_client_manager('admin')
|
||||||
|
cls.cmgr_alt = cls.get_client_manager('alt')
|
||||||
|
cls.cmgr_adm = cls.get_client_manager('admin')
|
||||||
|
|
||||||
|
@classmethod
|
||||||
|
def resource_setup(cls):
|
||||||
|
super(StaticRoutesUniDimensionalTest, cls).resource_setup()
|
||||||
|
if CONF.network.backend == "nsxv3":
|
||||||
|
cls.nsx = nsxv3_client.NSXV3Client(CONF.nsxv3.nsx_manager,
|
||||||
|
CONF.nsxv3.nsx_user,
|
||||||
|
CONF.nsxv3.nsx_password)
|
||||||
|
elif CONF.network.backend == "nsxv":
|
||||||
|
manager_ip = re.search(r"(\d{1,3}\.){3}\d{1,3}",
|
||||||
|
CONF.nsxv.manager_uri).group(0)
|
||||||
|
cls.vsm = nsxv_client.VSMClient(
|
||||||
|
manager_ip, CONF.nsxv.user, CONF.nsxv.password)
|
||||||
|
|
||||||
|
@decorators.attr(type='nsxv3')
|
||||||
|
@decorators.idempotent_id('a12264a2-daab-451f-ad3b-f0713a390f37')
|
||||||
|
def test_create_static_routes_single_nexthop_30routes(self):
|
||||||
|
"""
|
||||||
|
This testcase is to create the static routes
|
||||||
|
The same nexthop is used for 30 static routes
|
||||||
|
"""
|
||||||
|
kwargs = {"admin_state_up": "True"}
|
||||||
|
topology_dict = self._create_topo_single_network("rtr_update",
|
||||||
|
create_instance=False,
|
||||||
|
set_gateway=False,
|
||||||
|
**kwargs)
|
||||||
|
next_hopi = topology_dict.get('subnet_state').get('allocation_pools')
|
||||||
|
next_hop = next_hopi[0].get('end')
|
||||||
|
router_id = topology_dict.get('router_state', {}).get('id')
|
||||||
|
routes = []
|
||||||
|
destinations = []
|
||||||
|
for i in range(1, 255):
|
||||||
|
for j in range(1, 32):
|
||||||
|
val = "%s.0.0.0/%s" % (i, j)
|
||||||
|
try:
|
||||||
|
x = ipaddress.ip_network(str(val, 'utf-8'))
|
||||||
|
destinations.append(str(x))
|
||||||
|
except Exception:
|
||||||
|
pass
|
||||||
|
for destination in destinations:
|
||||||
|
route = {"destination": destination,
|
||||||
|
"nexthop": next_hop
|
||||||
|
}
|
||||||
|
routes.append(route)
|
||||||
|
self.routers_client.update_router(router_id,
|
||||||
|
routes=random.sample(routes, 30))
|
||||||
|
self.routers_client.update_router(router_id, routes=[])
|
||||||
|
|
||||||
|
@decorators.attr(type='nsxv3')
|
||||||
|
@decorators.idempotent_id('a12264a2-daab-451f-ad3b-f0713a390f37')
|
||||||
|
def test_update_multiple_times_static_routes_single_nexthop_30routes(self):
|
||||||
|
"""
|
||||||
|
This testcase is to create the static routes
|
||||||
|
The same nexthop is used for 30 static routes,
|
||||||
|
The static route is updated multple times.
|
||||||
|
"""
|
||||||
|
kwargs = {"admin_state_up": "True"}
|
||||||
|
topology_dict = self._create_topo_single_network("rtr_update",
|
||||||
|
create_instance=False,
|
||||||
|
set_gateway=False,
|
||||||
|
**kwargs)
|
||||||
|
next_hopi = topology_dict.get('subnet_state').get('allocation_pools')
|
||||||
|
next_hop = next_hopi[0].get('end')
|
||||||
|
router_id = topology_dict.get('router_state', {}).get('id')
|
||||||
|
routes = []
|
||||||
|
destinations = []
|
||||||
|
for i in range(1, 255):
|
||||||
|
for j in range(1, 32):
|
||||||
|
val = "%s.0.0.0/%s" % (i, j)
|
||||||
|
try:
|
||||||
|
x = ipaddress.ip_network(str(val, 'utf-8'))
|
||||||
|
destinations.append(str(x))
|
||||||
|
except Exception:
|
||||||
|
pass
|
||||||
|
for destination in destinations:
|
||||||
|
route = {"destination": destination,
|
||||||
|
"nexthop": next_hop
|
||||||
|
}
|
||||||
|
routes.append(route)
|
||||||
|
for i in range(10):
|
||||||
|
self.routers_client.update_router(router_id,
|
||||||
|
routes=random.sample(routes, 30))
|
||||||
|
self.routers_client.update_router(router_id, routes=[])
|
||||||
|
|
||||||
|
@decorators.attr(type='nsxv3')
|
||||||
|
@decorators.idempotent_id('a12264a2-daab-451f-ad3b-f0713a390f37')
|
||||||
|
def test_create_static_routes_random_nexthop_30routes(self):
|
||||||
|
"""
|
||||||
|
This testcase is to create the static routes
|
||||||
|
The same nexthop is used for 30 static routes
|
||||||
|
"""
|
||||||
|
kwargs = {"admin_state_up": "True"}
|
||||||
|
topology_dict = self._create_topo_single_network("rtr_update",
|
||||||
|
create_instance=False,
|
||||||
|
set_gateway=False,
|
||||||
|
**kwargs)
|
||||||
|
next_hop_dicti = topology_dict.get('subnet_state')
|
||||||
|
next_hop_dict = next_hop_dicti.get('allocation_pools')[0]
|
||||||
|
router_id = topology_dict.get('router_state', {}).get('id')
|
||||||
|
routes = []
|
||||||
|
destinations = []
|
||||||
|
for i in range(1, 255):
|
||||||
|
for j in range(1, 32):
|
||||||
|
val = "%s.0.0.0/%s" % (i, j)
|
||||||
|
try:
|
||||||
|
x = ipaddress.ip_network(str(val, 'utf-8'))
|
||||||
|
destinations.append(str(x))
|
||||||
|
except Exception:
|
||||||
|
pass
|
||||||
|
for destination in destinations:
|
||||||
|
route = {"destination": destination,
|
||||||
|
"nexthop": random.sample(next_hop_dict.values(), k=1)[0]
|
||||||
|
}
|
||||||
|
routes.append(route)
|
||||||
|
self.routers_client.update_router(router_id,
|
||||||
|
routes=random.sample(routes, 30))
|
||||||
|
self.routers_client.update_router(router_id, routes=[])
|
||||||
|
|
||||||
|
@decorators.attr(type='nsxv3')
|
||||||
|
@decorators.idempotent_id('a12264a2-daab-451f-ad3b-f0713a390f37')
|
||||||
|
def test_update_static_routes_random_nexthop_30routes(self):
|
||||||
|
"""
|
||||||
|
This testcase is to create the static routes
|
||||||
|
The same nexthop is used for 30 static routes
|
||||||
|
"""
|
||||||
|
kwargs = {"admin_state_up": "True"}
|
||||||
|
topology_dict = self._create_topo_single_network("rtr_update",
|
||||||
|
create_instance=False,
|
||||||
|
set_gateway=False,
|
||||||
|
**kwargs)
|
||||||
|
next_hop_dicti = topology_dict.get('subnet_state')
|
||||||
|
next_hop_dict = next_hop_dicti.get('allocation_pools')[0]
|
||||||
|
router_id = topology_dict.get('router_state', {}).get('id')
|
||||||
|
routes = []
|
||||||
|
destinations = []
|
||||||
|
for i in range(1, 255):
|
||||||
|
for j in range(1, 32):
|
||||||
|
val = "%s.0.0.0/%s" % (i, j)
|
||||||
|
try:
|
||||||
|
x = ipaddress.ip_network(str(val, 'utf-8'))
|
||||||
|
destinations.append(str(x))
|
||||||
|
except Exception:
|
||||||
|
pass
|
||||||
|
for destination in destinations:
|
||||||
|
route = {"destination": destination,
|
||||||
|
"nexthop": random.sample(next_hop_dict.values(), k=1)[0]
|
||||||
|
}
|
||||||
|
routes.append(route)
|
||||||
|
for i in range(100):
|
||||||
|
self.routers_client.update_router(router_id,
|
||||||
|
routes=random.sample(routes, 30))
|
||||||
|
self.routers_client.update_router(router_id, routes=[])
|
Loading…
Reference in New Issue
Block a user