Merge "Add neutron.CreateAndShowSubnet scenario"
This commit is contained in:
commit
cc7836fd59
@ -85,6 +85,30 @@
|
|||||||
failure_rate:
|
failure_rate:
|
||||||
max: 20
|
max: 20
|
||||||
|
|
||||||
|
NeutronNetworks.create_and_show_subnets:
|
||||||
|
-
|
||||||
|
args:
|
||||||
|
network_create_args:
|
||||||
|
subnet_create_args:
|
||||||
|
subnet_cidr_start: "1.1.0.0/30"
|
||||||
|
subnets_per_network: 2
|
||||||
|
runner:
|
||||||
|
type: "constant"
|
||||||
|
times: {{smoke or 20 }}
|
||||||
|
concurrency: {{smoke or 10}}
|
||||||
|
context:
|
||||||
|
network: {}
|
||||||
|
users:
|
||||||
|
tenants: {{smoke or 3}}
|
||||||
|
users_per_tenant: {{smoke or 2}}
|
||||||
|
quotas:
|
||||||
|
neutron:
|
||||||
|
network: -1
|
||||||
|
subnet: -1
|
||||||
|
sla:
|
||||||
|
failure_rate:
|
||||||
|
max: 20
|
||||||
|
|
||||||
NeutronSecurityGroup.create_and_list_security_groups:
|
NeutronSecurityGroup.create_and_list_security_groups:
|
||||||
-
|
-
|
||||||
args:
|
args:
|
||||||
|
@ -154,6 +154,38 @@ class CreateAndUpdateSubnets(utils.NeutronScenario):
|
|||||||
self._update_subnet(subnet, subnet_update_args)
|
self._update_subnet(subnet, subnet_update_args)
|
||||||
|
|
||||||
|
|
||||||
|
@validation.number("subnets_per_network", minval=1, integer_only=True)
|
||||||
|
@validation.required_services(consts.Service.NEUTRON)
|
||||||
|
@validation.required_openstack(users=True)
|
||||||
|
@scenario.configure(context={"cleanup": ["neutron"]},
|
||||||
|
name="NeutronNetworks.create_and_show_subnets")
|
||||||
|
class CreateAndShowSubnets(utils.NeutronScenario):
|
||||||
|
|
||||||
|
def run(self, network_create_args=None,
|
||||||
|
subnet_create_args=None, subnet_cidr_start=None,
|
||||||
|
subnets_per_network=1):
|
||||||
|
"""Create and show a subnet details.
|
||||||
|
|
||||||
|
The scenario creates a network, a given number of subnets
|
||||||
|
and show the subnet details. This scenario measures the
|
||||||
|
"neutron subnet-show" command performance.
|
||||||
|
|
||||||
|
:param network_create_args: dict, POST /v2.0/networks request
|
||||||
|
options.
|
||||||
|
:param subnet_create_args: dict, POST /v2.0/subnets request options
|
||||||
|
:param subnet_cidr_start: str, start value for subnets CIDR
|
||||||
|
:param subnets_per_network: int, number of subnets for one network
|
||||||
|
"""
|
||||||
|
network = self._get_or_create_network(network_create_args)
|
||||||
|
subnets = self._create_subnets(network, subnet_create_args,
|
||||||
|
subnet_cidr_start, subnets_per_network)
|
||||||
|
|
||||||
|
with atomic.ActionTimer(self,
|
||||||
|
"neutron.show_%s_subnets" % len(subnets)):
|
||||||
|
for subnet in subnets:
|
||||||
|
self._show_subnet(subnet, atomic_action=False)
|
||||||
|
|
||||||
|
|
||||||
@validation.required_parameters("subnets_per_network")
|
@validation.required_parameters("subnets_per_network")
|
||||||
@validation.required_services(consts.Service.NEUTRON)
|
@validation.required_services(consts.Service.NEUTRON)
|
||||||
@scenario.configure(context={"cleanup": ["neutron"]},
|
@scenario.configure(context={"cleanup": ["neutron"]},
|
||||||
|
@ -164,6 +164,17 @@ class NeutronScenario(scenario.OpenStackScenario):
|
|||||||
"""Returns user subnetworks list."""
|
"""Returns user subnetworks list."""
|
||||||
return self.clients("neutron").list_subnets()["subnets"]
|
return self.clients("neutron").list_subnets()["subnets"]
|
||||||
|
|
||||||
|
@atomic.optional_action_timer("neutron.show_subnet")
|
||||||
|
def _show_subnet(self, subnet, **kwargs):
|
||||||
|
"""show subnet details.
|
||||||
|
|
||||||
|
:param: subnet: Subnet object
|
||||||
|
:param: kwargs: Optional additional arguments for subnet show
|
||||||
|
:returns: details of the subnet
|
||||||
|
"""
|
||||||
|
return self.clients("neutron").show_subnet(subnet["subnet"]["id"],
|
||||||
|
**kwargs)
|
||||||
|
|
||||||
@atomic.action_timer("neutron.update_subnet")
|
@atomic.action_timer("neutron.update_subnet")
|
||||||
def _update_subnet(self, subnet, subnet_update_args):
|
def _update_subnet(self, subnet, subnet_update_args):
|
||||||
"""Update the neutron subnet.
|
"""Update the neutron subnet.
|
||||||
|
35
samples/tasks/scenarios/neutron/create-and-show-subnets.json
Normal file
35
samples/tasks/scenarios/neutron/create-and-show-subnets.json
Normal file
@ -0,0 +1,35 @@
|
|||||||
|
{
|
||||||
|
"NeutronNetworks.create_and_show_subnets": [
|
||||||
|
{
|
||||||
|
"args": {
|
||||||
|
"network_create_args": {},
|
||||||
|
"subnet_create_args": {},
|
||||||
|
"subnet_cidr_start": "1.1.0.0/30",
|
||||||
|
"subnets_per_network": 2
|
||||||
|
},
|
||||||
|
"runner": {
|
||||||
|
"type": "constant",
|
||||||
|
"times": 10,
|
||||||
|
"concurrency": 5
|
||||||
|
},
|
||||||
|
"context": {
|
||||||
|
"network": {},
|
||||||
|
"users": {
|
||||||
|
"tenants": 2,
|
||||||
|
"users_per_tenant": 3
|
||||||
|
},
|
||||||
|
"quotas": {
|
||||||
|
"neutron": {
|
||||||
|
"network": -1,
|
||||||
|
"subnet": -1
|
||||||
|
}
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"sla": {
|
||||||
|
"failure_rate": {
|
||||||
|
"max": 0
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
]
|
||||||
|
}
|
24
samples/tasks/scenarios/neutron/create-and-show-subnets.yaml
Normal file
24
samples/tasks/scenarios/neutron/create-and-show-subnets.yaml
Normal file
@ -0,0 +1,24 @@
|
|||||||
|
---
|
||||||
|
NeutronNetworks.create_and_show_subnets:
|
||||||
|
-
|
||||||
|
args:
|
||||||
|
network_create_args: {}
|
||||||
|
subnet_create_args: {}
|
||||||
|
subnet_cidr_start: "1.1.0.0/30"
|
||||||
|
subnets_per_network: 2
|
||||||
|
runner:
|
||||||
|
type: "constant"
|
||||||
|
times: 10
|
||||||
|
concurrency: 5
|
||||||
|
context:
|
||||||
|
network: {}
|
||||||
|
users:
|
||||||
|
tenants: 2
|
||||||
|
users_per_tenant: 3
|
||||||
|
quotas:
|
||||||
|
neutron:
|
||||||
|
network: -1
|
||||||
|
subnet: -1
|
||||||
|
sla:
|
||||||
|
failure_rate:
|
||||||
|
max: 0
|
@ -158,6 +158,31 @@ class NeutronNetworksTestCase(test.ScenarioTestCase):
|
|||||||
|
|
||||||
scenario._list_subnets.assert_called_once_with()
|
scenario._list_subnets.assert_called_once_with()
|
||||||
|
|
||||||
|
def test_create_and_show_subnets(self):
|
||||||
|
network_create_args = {"router:external": True}
|
||||||
|
subnet_create_args = {"allocation_pools": []}
|
||||||
|
subnet_cidr_start = "1.1.0.0/30"
|
||||||
|
subnets_per_network = 5
|
||||||
|
net = mock.MagicMock()
|
||||||
|
|
||||||
|
scenario = network.CreateAndShowSubnets(self.context)
|
||||||
|
scenario._get_or_create_network = mock.Mock(return_value=net)
|
||||||
|
scenario._create_subnets = mock.MagicMock()
|
||||||
|
scenario._show_subnet = mock.Mock()
|
||||||
|
|
||||||
|
scenario.run(network_create_args=network_create_args,
|
||||||
|
subnet_create_args=subnet_create_args,
|
||||||
|
subnet_cidr_start=subnet_cidr_start,
|
||||||
|
subnets_per_network=subnets_per_network)
|
||||||
|
|
||||||
|
scenario._get_or_create_network.assert_called_once_with(
|
||||||
|
network_create_args)
|
||||||
|
scenario._create_subnets.assert_called_once_with(
|
||||||
|
net, subnet_create_args, subnet_cidr_start, subnets_per_network)
|
||||||
|
for subnet in scenario._create_subnets.return_value:
|
||||||
|
scenario._show_subnet.assert_called_with(subnet,
|
||||||
|
atomic_action=False)
|
||||||
|
|
||||||
def test_create_and_update_subnets(self):
|
def test_create_and_update_subnets(self):
|
||||||
network_create_args = {"router:external": True}
|
network_create_args = {"router:external": True}
|
||||||
subnet_create_args = {"allocation_pools": []}
|
subnet_create_args = {"allocation_pools": []}
|
||||||
|
@ -183,6 +183,15 @@ class NeutronScenarioTestCase(test.ScenarioTestCase):
|
|||||||
self._test_atomic_action_timer(self.scenario.atomic_actions(),
|
self._test_atomic_action_timer(self.scenario.atomic_actions(),
|
||||||
"neutron.list_subnets")
|
"neutron.list_subnets")
|
||||||
|
|
||||||
|
def test_show_subnet(self):
|
||||||
|
subnet = {"subnet": {"name": "fake-name", "id": "fake-id"}}
|
||||||
|
|
||||||
|
result_subnet = self.scenario._show_subnet(subnet)
|
||||||
|
self.assertEqual(self.clients("neutron").show_subnet.return_value,
|
||||||
|
result_subnet)
|
||||||
|
self._test_atomic_action_timer(self.scenario.atomic_actions(),
|
||||||
|
"neutron.show_subnet")
|
||||||
|
|
||||||
def test_update_subnet(self):
|
def test_update_subnet(self):
|
||||||
expected_subnet = {
|
expected_subnet = {
|
||||||
"subnet": {
|
"subnet": {
|
||||||
|
Loading…
Reference in New Issue
Block a user