Add Neutron Security Groups scenarios
This patch adds the following scenarios: * Create and list Neutron security groups * Create and delete Neutron security groups * Create and update Neutron security groups Change-Id: Icd452f92a2be645354eb8f2f9c61ad57328f1863
This commit is contained in:
parent
f53de140fa
commit
f8cb55de28
@ -44,6 +44,64 @@
|
|||||||
failure_rate:
|
failure_rate:
|
||||||
max: 20
|
max: 20
|
||||||
|
|
||||||
|
NeutronSecurityGroup.create_and_list_security_groups:
|
||||||
|
-
|
||||||
|
args:
|
||||||
|
security_group_create_args: {}
|
||||||
|
runner:
|
||||||
|
type: "constant"
|
||||||
|
times: {{smoke or 20 }}
|
||||||
|
concurrency: {{smoke or 10}}
|
||||||
|
context:
|
||||||
|
users:
|
||||||
|
tenants: {{smoke or 3}}
|
||||||
|
users_per_tenant: {{smoke or 2}}
|
||||||
|
quotas:
|
||||||
|
neutron:
|
||||||
|
security_group: -1
|
||||||
|
sla:
|
||||||
|
failure_rate:
|
||||||
|
max: 20
|
||||||
|
|
||||||
|
NeutronSecurityGroup.create_and_delete_security_groups:
|
||||||
|
-
|
||||||
|
args:
|
||||||
|
security_group_create_args: {}
|
||||||
|
runner:
|
||||||
|
type: "constant"
|
||||||
|
times: {{smoke or 20 }}
|
||||||
|
concurrency: {{smoke or 10}}
|
||||||
|
context:
|
||||||
|
users:
|
||||||
|
tenants: {{smoke or 3}}
|
||||||
|
users_per_tenant: {{smoke or 2}}
|
||||||
|
quotas:
|
||||||
|
neutron:
|
||||||
|
security_group: -1
|
||||||
|
sla:
|
||||||
|
failure_rate:
|
||||||
|
max: 20
|
||||||
|
|
||||||
|
NeutronSecurityGroup.create_and_update_security_groups:
|
||||||
|
-
|
||||||
|
args:
|
||||||
|
security_group_create_args: {}
|
||||||
|
security_group_update_args: {}
|
||||||
|
runner:
|
||||||
|
type: "constant"
|
||||||
|
times: {{smoke or 20 }}
|
||||||
|
concurrency: {{smoke or 10}}
|
||||||
|
context:
|
||||||
|
users:
|
||||||
|
tenants: {{smoke or 3}}
|
||||||
|
users_per_tenant: {{smoke or 2}}
|
||||||
|
quotas:
|
||||||
|
neutron:
|
||||||
|
security_group: -1
|
||||||
|
sla:
|
||||||
|
failure_rate:
|
||||||
|
max: 20
|
||||||
|
|
||||||
NeutronNetworks.create_and_list_floating_ips:
|
NeutronNetworks.create_and_list_floating_ips:
|
||||||
-
|
-
|
||||||
args:
|
args:
|
||||||
|
77
rally/plugins/openstack/scenarios/neutron/security_groups.py
Normal file
77
rally/plugins/openstack/scenarios/neutron/security_groups.py
Normal file
@ -0,0 +1,77 @@
|
|||||||
|
# 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.
|
||||||
|
|
||||||
|
from rally import consts
|
||||||
|
from rally.plugins.openstack import scenario
|
||||||
|
from rally.plugins.openstack.scenarios.neutron import utils
|
||||||
|
from rally.task import validation
|
||||||
|
|
||||||
|
|
||||||
|
class NeutronSecurityGroup(utils.NeutronScenario):
|
||||||
|
"""Benchmark scenarios for Neutron Security Groups."""
|
||||||
|
|
||||||
|
@validation.required_services(consts.Service.NEUTRON)
|
||||||
|
@validation.required_openstack(users=True)
|
||||||
|
@scenario.configure(context={"cleanup": ["neutron"]})
|
||||||
|
def create_and_list_security_groups(self, security_group_create_args=None):
|
||||||
|
"""Create and list Neutron security-groups.
|
||||||
|
|
||||||
|
Measure the "neutron security-group-create" and "neutron
|
||||||
|
security-group-list" command performance.
|
||||||
|
|
||||||
|
:param security_group_create_args: dict, POST /v2.0/security-groups
|
||||||
|
request options
|
||||||
|
"""
|
||||||
|
security_group_create_args = security_group_create_args or {}
|
||||||
|
self._create_security_group(**security_group_create_args)
|
||||||
|
self._list_security_groups()
|
||||||
|
|
||||||
|
@validation.required_services(consts.Service.NEUTRON)
|
||||||
|
@validation.required_openstack(users=True)
|
||||||
|
@scenario.configure()
|
||||||
|
def create_and_delete_security_groups(self,
|
||||||
|
security_group_create_args=None):
|
||||||
|
"""Create and delete Neutron security-groups.
|
||||||
|
|
||||||
|
Measure the "neutron security-group-create" and "neutron
|
||||||
|
security-group-delete" command performance.
|
||||||
|
|
||||||
|
:param security_group_create_args: dict, POST /v2.0/security-groups
|
||||||
|
request options
|
||||||
|
"""
|
||||||
|
security_group_create_args = security_group_create_args or {}
|
||||||
|
security_group = self._create_security_group(
|
||||||
|
**security_group_create_args)
|
||||||
|
self._delete_security_group(security_group)
|
||||||
|
|
||||||
|
@validation.required_services(consts.Service.NEUTRON)
|
||||||
|
@validation.required_openstack(users=True)
|
||||||
|
@scenario.configure(context={"cleanup": ["neutron"]})
|
||||||
|
def create_and_update_security_groups(self,
|
||||||
|
security_group_create_args=None,
|
||||||
|
security_group_update_args=None):
|
||||||
|
"""Create and update Neutron security-groups.
|
||||||
|
|
||||||
|
Measure the "neutron security-group-create" and "neutron
|
||||||
|
security-group-update" command performance.
|
||||||
|
|
||||||
|
:param security_group_create_args: dict, POST /v2.0/security-groups
|
||||||
|
request options
|
||||||
|
:param security_group_update_args: dict, POST /v2.0/security-groups
|
||||||
|
update options
|
||||||
|
"""
|
||||||
|
security_group_create_args = security_group_create_args or {}
|
||||||
|
security_group_update_args = security_group_update_args or {}
|
||||||
|
security_group = self._create_security_group(
|
||||||
|
**security_group_create_args)
|
||||||
|
self._update_security_group(security_group,
|
||||||
|
**security_group_update_args)
|
@ -490,3 +490,45 @@ class NeutronScenario(scenario.OpenStackScenario):
|
|||||||
body = {"health_monitor": healthmonitor_update_args}
|
body = {"health_monitor": healthmonitor_update_args}
|
||||||
return self.clients("neutron").update_health_monitor(
|
return self.clients("neutron").update_health_monitor(
|
||||||
healthmonitor["health_monitor"]["id"], body)
|
healthmonitor["health_monitor"]["id"], body)
|
||||||
|
|
||||||
|
@atomic.action_timer("neutron.create_security_group")
|
||||||
|
def _create_security_group(self, **security_group_create_args):
|
||||||
|
"""Create Neutron security-group.
|
||||||
|
|
||||||
|
param: security_group_create_args: dict, POST /v2.0/security-groups
|
||||||
|
request options
|
||||||
|
return: dict, neutron security-group
|
||||||
|
"""
|
||||||
|
security_group_create_args["name"] = self.generate_random_name()
|
||||||
|
return self.clients("neutron").create_security_group(
|
||||||
|
{"security_group": security_group_create_args})
|
||||||
|
|
||||||
|
@atomic.action_timer("neutron.delete_security_group")
|
||||||
|
def _delete_security_group(self, security_group):
|
||||||
|
"""Delete Neutron security group.
|
||||||
|
|
||||||
|
param: security_group: dict, neutron security_group
|
||||||
|
"""
|
||||||
|
return self.clients("neutron").delete_security_group(
|
||||||
|
security_group["security_group"]["id"])
|
||||||
|
|
||||||
|
@atomic.action_timer("neutron.list_security_groups")
|
||||||
|
def _list_security_groups(self, **kwargs):
|
||||||
|
"""Return list of Neutron security groups."""
|
||||||
|
return self.clients("neutron").list_security_groups(**kwargs)
|
||||||
|
|
||||||
|
@atomic.action_timer("neutron.update_security_group")
|
||||||
|
def _update_security_group(self, security_group,
|
||||||
|
**security_group_update_args):
|
||||||
|
"""Update Neutron security-group.
|
||||||
|
|
||||||
|
param: security_group: dict, neutron security_group
|
||||||
|
param: security_group_update_args: dict, POST /v2.0/security-groups
|
||||||
|
update options
|
||||||
|
return: dict, updated neutron security-group
|
||||||
|
"""
|
||||||
|
self._warn_about_deprecated_name_kwarg(security_group,
|
||||||
|
security_group_update_args)
|
||||||
|
body = {"security_group": security_group_update_args}
|
||||||
|
return self.clients("neutron").update_security_group(
|
||||||
|
security_group["security_group"]["id"], body)
|
||||||
|
@ -0,0 +1,83 @@
|
|||||||
|
# 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 ddt
|
||||||
|
import mock
|
||||||
|
|
||||||
|
from rally.plugins.openstack.scenarios.neutron import security_groups
|
||||||
|
from tests.unit import test
|
||||||
|
|
||||||
|
|
||||||
|
@ddt.ddt
|
||||||
|
class NeutronSecurityGroup(test.TestCase):
|
||||||
|
|
||||||
|
@ddt.data(
|
||||||
|
{},
|
||||||
|
{"security_group_create_args": {}},
|
||||||
|
{"security_group_create_args": {"description": "fake-description"}},
|
||||||
|
)
|
||||||
|
@ddt.unpack
|
||||||
|
def test_create_and_list_security_groups(
|
||||||
|
self, security_group_create_args=None):
|
||||||
|
neutron_scenario = security_groups.NeutronSecurityGroup()
|
||||||
|
security_group_data = security_group_create_args or {}
|
||||||
|
neutron_scenario._create_security_group = mock.Mock()
|
||||||
|
neutron_scenario._list_security_groups = mock.Mock()
|
||||||
|
neutron_scenario.create_and_list_security_groups(
|
||||||
|
security_group_create_args=security_group_create_args)
|
||||||
|
neutron_scenario._create_security_group.assert_called_once_with(
|
||||||
|
**security_group_data)
|
||||||
|
neutron_scenario._list_security_groups.assert_called_once_with()
|
||||||
|
|
||||||
|
@ddt.data(
|
||||||
|
{},
|
||||||
|
{"security_group_create_args": {}},
|
||||||
|
{"security_group_create_args": {"description": "fake-description"}},
|
||||||
|
)
|
||||||
|
@ddt.unpack
|
||||||
|
def test_create_and_delete_security_groups(
|
||||||
|
self, security_group_create_args=None):
|
||||||
|
neutron_scenario = security_groups.NeutronSecurityGroup()
|
||||||
|
security_group_data = security_group_create_args or {}
|
||||||
|
neutron_scenario._create_security_group = mock.Mock()
|
||||||
|
neutron_scenario._delete_security_group = mock.Mock()
|
||||||
|
neutron_scenario.create_and_delete_security_groups(
|
||||||
|
security_group_create_args=security_group_create_args)
|
||||||
|
neutron_scenario._create_security_group.assert_called_once_with(
|
||||||
|
**security_group_data)
|
||||||
|
neutron_scenario._delete_security_group.assert_called_once_with(
|
||||||
|
neutron_scenario._create_security_group.return_value)
|
||||||
|
|
||||||
|
@ddt.data(
|
||||||
|
{},
|
||||||
|
{"security_group_create_args": {}},
|
||||||
|
{"security_group_create_args": {"description": "fake-description"}},
|
||||||
|
{"security_group_update_args": {}},
|
||||||
|
{"security_group_update_args": {"description": "fake-updated-descr"}},
|
||||||
|
)
|
||||||
|
@ddt.unpack
|
||||||
|
def test_create_and_update_security_groups(
|
||||||
|
self, security_group_create_args=None,
|
||||||
|
security_group_update_args=None):
|
||||||
|
neutron_scenario = security_groups.NeutronSecurityGroup()
|
||||||
|
security_group_data = security_group_create_args or {}
|
||||||
|
security_group_update_data = security_group_update_args or {}
|
||||||
|
neutron_scenario._create_security_group = mock.Mock()
|
||||||
|
neutron_scenario._update_security_group = mock.Mock()
|
||||||
|
neutron_scenario.create_and_update_security_groups(
|
||||||
|
security_group_create_args=security_group_create_args,
|
||||||
|
security_group_update_args=security_group_update_args)
|
||||||
|
neutron_scenario._create_security_group.assert_called_once_with(
|
||||||
|
**security_group_data)
|
||||||
|
neutron_scenario._update_security_group.assert_called_once_with(
|
||||||
|
neutron_scenario._create_security_group.return_value,
|
||||||
|
**security_group_update_data)
|
@ -575,6 +575,77 @@ class NeutronScenarioTestCase(test.ScenarioTestCase):
|
|||||||
self._test_atomic_action_timer(scenario.atomic_actions(),
|
self._test_atomic_action_timer(scenario.atomic_actions(),
|
||||||
"neutron.update_vip")
|
"neutron.update_vip")
|
||||||
|
|
||||||
|
@mock.patch(NEUTRON_UTILS + "NeutronScenario.generate_random_name")
|
||||||
|
def test_create_security_group(self, mock_generate_random_name):
|
||||||
|
neutron_scenario = utils.NeutronScenario(self.context)
|
||||||
|
random_name = "random_name"
|
||||||
|
security_group_create_args = {"description": "Fake security group"}
|
||||||
|
expected_security_group = {
|
||||||
|
"security_group": {"id": "fake-id",
|
||||||
|
"name": random_name,
|
||||||
|
"description": "Fake security group"}
|
||||||
|
}
|
||||||
|
mock_generate_random_name.return_value = random_name
|
||||||
|
self.clients("neutron").create_security_group = mock.Mock(
|
||||||
|
return_value=expected_security_group)
|
||||||
|
|
||||||
|
security_group_data = {
|
||||||
|
"security_group":
|
||||||
|
{"name": "random_name",
|
||||||
|
"description": "Fake security group"}
|
||||||
|
}
|
||||||
|
resultant_security_group = neutron_scenario._create_security_group(
|
||||||
|
**security_group_create_args)
|
||||||
|
self.assertEqual(expected_security_group, resultant_security_group)
|
||||||
|
self.clients("neutron").create_security_group.assert_called_once_with(
|
||||||
|
security_group_data)
|
||||||
|
self._test_atomic_action_timer(neutron_scenario.atomic_actions(),
|
||||||
|
"neutron.create_security_group")
|
||||||
|
|
||||||
|
def test_list_security_groups(self):
|
||||||
|
scenario = utils.NeutronScenario()
|
||||||
|
security_groups_list = [{"id": "security-group-id"}]
|
||||||
|
security_groups_dict = {"security_groups": security_groups_list}
|
||||||
|
self.clients("neutron").list_security_groups = mock.Mock(
|
||||||
|
return_value=security_groups_dict)
|
||||||
|
self.assertEqual(
|
||||||
|
scenario._list_security_groups(),
|
||||||
|
self.clients("neutron").list_security_groups.return_value)
|
||||||
|
self._test_atomic_action_timer(scenario.atomic_actions(),
|
||||||
|
"neutron.list_security_groups")
|
||||||
|
|
||||||
|
def test_delete_security_group(self):
|
||||||
|
scenario = utils.NeutronScenario()
|
||||||
|
|
||||||
|
security_group = {"security_group": {"id": "fake-id"}}
|
||||||
|
scenario._delete_security_group(security_group)
|
||||||
|
self.clients("neutron").delete_security_group.assert_called_once_with(
|
||||||
|
security_group["security_group"]["id"])
|
||||||
|
self._test_atomic_action_timer(scenario.atomic_actions(),
|
||||||
|
"neutron.delete_security_group")
|
||||||
|
|
||||||
|
def test_update_security_group(self):
|
||||||
|
scenario = utils.NeutronScenario()
|
||||||
|
|
||||||
|
security_group = {"security_group": {"id": "security-group-id",
|
||||||
|
"description": "Not updated"}}
|
||||||
|
expected_security_group = {
|
||||||
|
"security_group": {"id": "security-group-id",
|
||||||
|
"description": "Updated"}
|
||||||
|
}
|
||||||
|
security_group_update_args = {"description": "Updated"}
|
||||||
|
security_group_update_data = {
|
||||||
|
"security_group": security_group_update_args}
|
||||||
|
self.clients("neutron").update_security_group = mock.Mock(
|
||||||
|
return_value=expected_security_group)
|
||||||
|
result_security_group = scenario._update_security_group(
|
||||||
|
security_group, **security_group_update_args)
|
||||||
|
self.clients("neutron").update_security_group.assert_called_once_with(
|
||||||
|
security_group["security_group"]["id"], security_group_update_data)
|
||||||
|
self.assertEqual(result_security_group, expected_security_group)
|
||||||
|
self._test_atomic_action_timer(scenario.atomic_actions(),
|
||||||
|
"neutron.update_security_group")
|
||||||
|
|
||||||
|
|
||||||
class NeutronScenarioFunctionalTestCase(test.FakeClientsScenarioTestCase):
|
class NeutronScenarioFunctionalTestCase(test.FakeClientsScenarioTestCase):
|
||||||
|
|
||||||
|
Loading…
x
Reference in New Issue
Block a user