Add neutron.CreateAndDeleteSecurityGroupRule scenario

create and delete a  security_group_rule

Change-Id: I9c1402c32735a69d12377cfdd046938fbca114aa
This commit is contained in:
zhangzhang 2017-06-26 07:40:04 -04:00
parent ef1b52e1ff
commit 64315dca2e
7 changed files with 160 additions and 0 deletions

View File

@ -251,6 +251,23 @@
failure_rate:
max: 0
NeutronSecurityGroup.create_and_delete_security_group_rule:
-
args:
security_group_args: {}
security_group_rule_args: {}
runner:
type: "constant"
times: 4
concurrency: 4
context:
users:
tenants: 2
users_per_tenant: 1
sla:
failure_rate:
max: 0
NeutronNetworks.create_and_list_floating_ips:
-
args:

View File

@ -196,3 +196,41 @@ class CreateAndShowSecurityGroupRule(utils.NeutronScenario):
self._show_security_group_rule(
security_group_rule["security_group_rule"]["id"])
@validation.add("required_services",
services=[consts.Service.NEUTRON])
@validation.add("required_platform", platform="openstack", users=True)
@scenario.configure(
context={"cleanup": ["neutron"]},
name="NeutronSecurityGroup.create_and_delete_security_group_rule",
platform="openstack")
class CreateAndDeleteSecurityGroupRule(utils.NeutronScenario):
def run(self, security_group_args=None,
security_group_rule_args=None):
"""Create and delete Neutron security-group-rule.
Measure the "neutron security-group-rule-create" and "neutron
security-group-rule-delete" command performance.
:param security_group_args: dict, POST /v2.0/security-groups
request options
:param security_group_rule_args: dict,
POST /v2.0/security-group-rules request options
"""
security_group_args = security_group_args or {}
security_group_rule_args = security_group_rule_args or {}
security_group = self._create_security_group(**security_group_args)
msg = "security_group isn't created"
self.assertTrue(security_group, err_msg=msg)
security_group_rule = self._create_security_group_rule(
security_group["security_group"]["id"], **security_group_rule_args)
msg = "security_group_rule isn't created"
self.assertTrue(security_group_rule, err_msg=msg)
self._delete_security_group_rule(
security_group_rule["security_group_rule"]["id"])
self._delete_security_group(security_group)

View File

@ -855,3 +855,12 @@ class NeutronScenario(scenario.OpenStackScenario):
"""
return self.clients("neutron").show_security_group_rule(
security_group_rule, **kwargs)
@atomic.action_timer("neutron.delete_security_group_rule")
def _delete_security_group_rule(self, security_group_rule):
"""Delete a given security group rule.
:param security_group_rule: id of security group rule
"""
self.clients("neutron").delete_security_group_rule(
security_group_rule)

View File

@ -0,0 +1,31 @@
{
"NeutronSecurityGroup.create_and_delete_security_group_rule": [
{
"args": {
"security_group_args": {},
"security_group_rule_args":{}
},
"runner": {
"type": "constant",
"times": 20,
"concurrency": 10
},
"context": {
"users": {
"tenants": 3,
"users_per_tenant": 3
},
"quotas": {
"neutron": {
"security_group": -1
}
}
},
"sla": {
"failure_rate": {
"max": 0
}
}
}
]
}

View File

@ -0,0 +1,20 @@
---
NeutronSecurityGroup.create_and_delete_security_group_rule:
-
args:
security_group_args: {}
security_group_rule_args: {}
runner:
type: "constant"
times: 20
concurrency: 10
context:
users:
tenants: 3
users_per_tenant: 3
quotas:
neutron:
security_group: -1
sla:
failure_rate:
max: 0

View File

@ -261,6 +261,44 @@ class NeutronSecurityGroup(test.TestCase):
scenario._show_security_group_rule.assert_called_once_with(
security_group_rule["security_group_rule"]["id"])
@ddt.data(
{},
{"security_group_args": {}},
{"security_group_args": {"description": "fake-description"}},
{"security_group_rule_args": {}},
{"security_group_rule_args": {"description": "fake-rule-descr"}}
)
@ddt.unpack
def test_create_and_delete_security_group_rule(
self, security_group_args=None,
security_group_rule_args=None):
scenario = security_groups.CreateAndDeleteSecurityGroupRule()
security_group_data = security_group_args or {}
security_group_rule_data = security_group_rule_args or {}
security_group = mock.MagicMock()
security_group_rule = {"security_group_rule": {"id": 1, "name": "f1"}}
scenario._create_security_group = mock.MagicMock()
scenario._create_security_group_rule = mock.MagicMock()
scenario._delete_security_group_rule = mock.MagicMock()
scenario._delete_security_group = mock.MagicMock()
# Positive case
scenario._create_security_group.return_value = security_group
scenario._create_security_group_rule.return_value = security_group_rule
scenario.run(security_group_args=security_group_data,
security_group_rule_args=security_group_rule_data)
scenario._create_security_group.assert_called_once_with(
**security_group_data)
scenario._create_security_group_rule.assert_called_once_with(
security_group["security_group"]["id"],
**security_group_rule_data)
scenario._delete_security_group_rule.assert_called_once_with(
security_group_rule["security_group_rule"]["id"])
scenario._delete_security_group.assert_called_once_with(
security_group)
@ddt.data(
{},
{"security_group_args": {}},

View File

@ -891,6 +891,13 @@ class NeutronScenarioTestCase(test.ScenarioTestCase):
self._test_atomic_action_timer(self.scenario.atomic_actions(),
"neutron.show_security_group_rule")
def test_delete_security_group_rule(self):
self.scenario._delete_security_group_rule(1)
clients = self.clients("neutron")
clients.delete_security_group_rule.assert_called_once_with(1)
self._test_atomic_action_timer(self.scenario.atomic_actions(),
"neutron.delete_security_group_rule")
@ddt.data(
{"networks": [{"subnets": "subnet-id"}]},
{"pool_create_args": None, "networks": [{"subnets": ["subnet-id"]}]},