Add test for performance in constraint validation
There are follow important changes in patch: - New constraint was added. This constraint emulate delay during resolving custom constraint for property. - New property was added for TestResource. This property uses new constraint. - Added Rally scenario create-delete, which uses template with ResourceGroup of TestResources with custom constraint. Depends-On: I06183138d54c1cb971a58a158a15f3f5b25cba4d Change-Id: I53d83f59be9bd27db451f87aaae2d8446f287c17
This commit is contained in:
parent
14f3bb75a3
commit
fbb1a49424
@ -12,6 +12,7 @@
|
|||||||
# under the License.
|
# under the License.
|
||||||
|
|
||||||
import croniter
|
import croniter
|
||||||
|
import eventlet
|
||||||
import netaddr
|
import netaddr
|
||||||
import pytz
|
import pytz
|
||||||
import six
|
import six
|
||||||
@ -23,6 +24,12 @@ from heat.common.i18n import _
|
|||||||
from heat.engine import constraints
|
from heat.engine import constraints
|
||||||
|
|
||||||
|
|
||||||
|
class TestConstraintDelay(constraints.BaseCustomConstraint):
|
||||||
|
|
||||||
|
def validate_with_client(self, client, value):
|
||||||
|
eventlet.sleep(value)
|
||||||
|
|
||||||
|
|
||||||
class IPConstraint(constraints.BaseCustomConstraint):
|
class IPConstraint(constraints.BaseCustomConstraint):
|
||||||
|
|
||||||
def validate(self, value, context):
|
def validate(self, value, context):
|
||||||
|
@ -18,6 +18,7 @@ import six
|
|||||||
|
|
||||||
from heat.common.i18n import _
|
from heat.common.i18n import _
|
||||||
from heat.engine import attributes
|
from heat.engine import attributes
|
||||||
|
from heat.engine import constraints
|
||||||
from heat.engine import properties
|
from heat.engine import properties
|
||||||
from heat.engine import resource
|
from heat.engine import resource
|
||||||
from heat.engine import support
|
from heat.engine import support
|
||||||
@ -44,10 +45,12 @@ class TestResource(resource.Resource):
|
|||||||
VALUE, UPDATE_REPLACE, FAIL,
|
VALUE, UPDATE_REPLACE, FAIL,
|
||||||
CLIENT_NAME, ENTITY_NAME,
|
CLIENT_NAME, ENTITY_NAME,
|
||||||
WAIT_SECS, ACTION_WAIT_SECS, ATTR_WAIT_SECS,
|
WAIT_SECS, ACTION_WAIT_SECS, ATTR_WAIT_SECS,
|
||||||
|
CONSTRAINT_PROP_SECS,
|
||||||
) = (
|
) = (
|
||||||
'value', 'update_replace', 'fail',
|
'value', 'update_replace', 'fail',
|
||||||
'client_name', 'entity_name',
|
'client_name', 'entity_name',
|
||||||
'wait_secs', 'action_wait_secs', 'attr_wait_secs',
|
'wait_secs', 'action_wait_secs', 'attr_wait_secs',
|
||||||
|
'constraint_prop_secs',
|
||||||
)
|
)
|
||||||
|
|
||||||
ATTRIBUTES = (
|
ATTRIBUTES = (
|
||||||
@ -57,6 +60,16 @@ class TestResource(resource.Resource):
|
|||||||
)
|
)
|
||||||
|
|
||||||
properties_schema = {
|
properties_schema = {
|
||||||
|
CONSTRAINT_PROP_SECS: properties.Schema(
|
||||||
|
properties.Schema.NUMBER,
|
||||||
|
_('Number value for delay during resolve constraint.'),
|
||||||
|
default=0,
|
||||||
|
update_allowed=True,
|
||||||
|
constraints=[
|
||||||
|
constraints.CustomConstraint('test_constr')
|
||||||
|
],
|
||||||
|
support_status=support.SupportStatus(version='6.0.0')
|
||||||
|
),
|
||||||
ATTR_WAIT_SECS: properties.Schema(
|
ATTR_WAIT_SECS: properties.Schema(
|
||||||
properties.Schema.NUMBER,
|
properties.Schema.NUMBER,
|
||||||
_('Number value for timeout during resolving output value.'),
|
_('Number value for timeout during resolving output value.'),
|
||||||
|
19
rally-scenarios/extra/rg_template_with_constraint.yaml
Normal file
19
rally-scenarios/extra/rg_template_with_constraint.yaml
Normal file
@ -0,0 +1,19 @@
|
|||||||
|
heat_template_version: 2013-05-23
|
||||||
|
description: Template for testing caching.
|
||||||
|
parameters:
|
||||||
|
count:
|
||||||
|
type: number
|
||||||
|
default: 40
|
||||||
|
delay:
|
||||||
|
type: number
|
||||||
|
default: 0.3
|
||||||
|
|
||||||
|
resources:
|
||||||
|
rg:
|
||||||
|
type: OS::Heat::ResourceGroup
|
||||||
|
properties:
|
||||||
|
count: {get_param: count}
|
||||||
|
resource_def:
|
||||||
|
type: OS::Heat::TestResource
|
||||||
|
properties:
|
||||||
|
constraint_prop_secs: {get_param: delay}
|
@ -20,3 +20,15 @@
|
|||||||
users:
|
users:
|
||||||
tenants: 10
|
tenants: 10
|
||||||
users_per_tenant: 3
|
users_per_tenant: 3
|
||||||
|
|
||||||
|
-
|
||||||
|
args:
|
||||||
|
template_path: "~/.rally/extra/rg_template_with_constraint.yaml"
|
||||||
|
runner:
|
||||||
|
type: "constant"
|
||||||
|
times: 10
|
||||||
|
concurrency: 2
|
||||||
|
context:
|
||||||
|
users:
|
||||||
|
tenants: 1
|
||||||
|
users_per_tenant: 1
|
||||||
|
@ -103,6 +103,7 @@ heat.constraints =
|
|||||||
ip_addr = heat.engine.constraint.common_constraints:IPConstraint
|
ip_addr = heat.engine.constraint.common_constraints:IPConstraint
|
||||||
mac_addr = heat.engine.constraint.common_constraints:MACConstraint
|
mac_addr = heat.engine.constraint.common_constraints:MACConstraint
|
||||||
net_cidr = heat.engine.constraint.common_constraints:CIDRConstraint
|
net_cidr = heat.engine.constraint.common_constraints:CIDRConstraint
|
||||||
|
test_constr = heat.engine.constraint.common_constraints:TestConstraintDelay
|
||||||
keystone.role = heat.engine.clients.os.keystone:KeystoneRoleConstraint
|
keystone.role = heat.engine.clients.os.keystone:KeystoneRoleConstraint
|
||||||
keystone.domain = heat.engine.clients.os.keystone:KeystoneDomainConstraint
|
keystone.domain = heat.engine.clients.os.keystone:KeystoneDomainConstraint
|
||||||
keystone.project = heat.engine.clients.os.keystone:KeystoneProjectConstraint
|
keystone.project = heat.engine.clients.os.keystone:KeystoneProjectConstraint
|
||||||
|
Loading…
x
Reference in New Issue
Block a user