Fix hacking 0.9.x issues
Fixed issues: H202 assertRaises Exception too broad H305 imports not grouped correctly H307 like imports should be grouped together H405 multi line docstring summary not separated with an empty line H904 Wrap long lines in parentheses instead of a backslash E122 continuation line missing indentation or outdented E128 continuation line under-indented for visual indent E131 continuation line unaligned for hanging indent E251 unexpected spaces around keyword / parameter equals E265 block comment should start with '# ' Change-Id: Ia2b8994c58686e3570f303f0725a2850d6b36e47
This commit is contained in:
@@ -14,6 +14,7 @@
|
||||
# under the License.
|
||||
|
||||
from rally.benchmark.context import base
|
||||
from rally import exceptions
|
||||
from rally.openstack.common.gettextutils import _
|
||||
from rally.openstack.common import log as logging
|
||||
from rally import osclients
|
||||
@@ -57,9 +58,7 @@ class RoleGenerator(base.Context):
|
||||
role = def_role
|
||||
break
|
||||
else:
|
||||
msg = (_("Role '%(role)s' does not exist in the list of roles") %
|
||||
{"role": context_role})
|
||||
raise Exception(msg)
|
||||
raise exceptions.NoSuchRole(role=context_role)
|
||||
|
||||
LOG.debug("Adding role %s to all users" % (role.id))
|
||||
for user in self.context["users"]:
|
||||
|
@@ -14,6 +14,7 @@
|
||||
# under the License.
|
||||
|
||||
from oslo.config import cfg
|
||||
|
||||
from rally.benchmark.context import base
|
||||
from rally.benchmark import utils
|
||||
from rally import consts
|
||||
|
@@ -14,9 +14,10 @@
|
||||
# under the License.
|
||||
|
||||
import json
|
||||
import traceback
|
||||
|
||||
import jsonschema
|
||||
import six
|
||||
import traceback
|
||||
|
||||
from rally.benchmark.context import base as base_ctx
|
||||
from rally.benchmark.context import users as users_ctx
|
||||
@@ -65,9 +66,10 @@ CONFIG_SCHEMA = {
|
||||
|
||||
|
||||
class BenchmarkEngine(object):
|
||||
"""The Benchmark engine class, an instance of which is initialized by the
|
||||
Orchestrator with the benchmarks configuration and then is used to execute
|
||||
all specified benchmark scenarios.
|
||||
"""The Benchmark engine class is used to execute benchmark scenarios.
|
||||
|
||||
An instance of class is initialized by the Orchestrator with the benchmarks
|
||||
configuration and then is used to execute all specified scenarios.
|
||||
.. note::
|
||||
|
||||
Typical usage:
|
||||
@@ -81,6 +83,7 @@ class BenchmarkEngine(object):
|
||||
|
||||
def __init__(self, config, task):
|
||||
"""BenchmarkEngine constructor.
|
||||
|
||||
:param config: The configuration with specified benchmark scenarios
|
||||
:param task: The current task which is being performed
|
||||
"""
|
||||
@@ -165,8 +168,9 @@ class BenchmarkEngine(object):
|
||||
|
||||
@rutils.log_task_wrapper(LOG.info, _("Benchmarking."))
|
||||
def run(self):
|
||||
"""Runs the benchmarks according to the test configuration
|
||||
the benchmark engine was initialized with.
|
||||
"""Run the benchmark according to the test configuration.
|
||||
|
||||
Test configuration is specified on engine initialization.
|
||||
|
||||
:returns: List of dicts, each dict containing the results of all the
|
||||
corresponding benchmark test launches
|
||||
|
@@ -81,8 +81,10 @@ def calculate_number_of_bins_half(data):
|
||||
|
||||
|
||||
def hvariety(data):
|
||||
"""Returns a list of dictionaries, where every dictionary
|
||||
describes a method of calculating the number of bins.
|
||||
"""Describe methods of calculating the number of bins.
|
||||
|
||||
:returns: List of dictionaries, where every dictionary
|
||||
describes a method of calculating the number of bins.
|
||||
"""
|
||||
if len(data) == 0:
|
||||
raise ValueError("Cannot calculate number of histrogram bins "
|
||||
|
@@ -16,8 +16,9 @@ from rally.benchmark.scenarios import base
|
||||
|
||||
|
||||
class Authenticate(base.Scenario):
|
||||
"""This class should contain authentication mechanism for different
|
||||
types of clients like Keystone.
|
||||
"""This class should contain authentication mechanism.
|
||||
|
||||
For different types of clients like Keystone.
|
||||
"""
|
||||
|
||||
@base.scenario()
|
||||
|
@@ -25,7 +25,9 @@ from rally import utils
|
||||
|
||||
|
||||
def scenario(admin_only=False, context=None):
|
||||
"""This method is used as decorator for the methods of benchmark scenarios
|
||||
"""Add extra fields to benchmark scenarios methods.
|
||||
|
||||
This method is used as decorator for the methods of benchmark scenarios
|
||||
and it adds following extra fields to the methods.
|
||||
'is_scenario' is set to True
|
||||
'admin_only' is set to True if a scenario require admin endpoints
|
||||
@@ -40,7 +42,8 @@ def scenario(admin_only=False, context=None):
|
||||
|
||||
class Scenario(object):
|
||||
"""This is base class for any benchmark scenario.
|
||||
You should create subclass of this class. And you test scenarios will
|
||||
|
||||
You should create subclass of this class. And your test scenarios will
|
||||
be auto discoverable and you will be able to specify it in test config.
|
||||
"""
|
||||
RESOURCE_NAME_PREFIX = ""
|
||||
|
@@ -19,9 +19,6 @@ from rally.benchmark.scenarios import utils as scenario_utils
|
||||
|
||||
|
||||
class CeilometerScenario(base.Scenario):
|
||||
"""This class should contain base operations for benchmarking Ceilometer,
|
||||
most of them are GET/PUT/POST/DELETE Api calls.
|
||||
"""
|
||||
RESOURCE_NAME_PREFIX = "rally_ceilometer_"
|
||||
|
||||
def _get_alarm_dict(self, **kwargs):
|
||||
|
@@ -13,9 +13,10 @@
|
||||
# License for the specific language governing permissions and limitations
|
||||
# under the License.
|
||||
|
||||
from oslo.config import cfg
|
||||
import time
|
||||
|
||||
from oslo.config import cfg
|
||||
|
||||
from rally.benchmark.scenarios import base
|
||||
from rally.benchmark.scenarios import utils as scenario_utils
|
||||
from rally.benchmark import utils as bench_utils
|
||||
|
@@ -14,9 +14,10 @@
|
||||
# under the License.
|
||||
|
||||
import os
|
||||
from oslo.config import cfg
|
||||
import time
|
||||
|
||||
from oslo.config import cfg
|
||||
|
||||
from rally.benchmark.scenarios import base
|
||||
from rally.benchmark.scenarios import utils as scenario_utils
|
||||
from rally.benchmark import utils as bench_utils
|
||||
@@ -97,7 +98,7 @@ class GlanceScenario(base.Scenario):
|
||||
update_resource=bench_utils.get_from_manager(),
|
||||
timeout=CONF.benchmark.glance_image_create_timeout,
|
||||
check_interval=CONF.benchmark.
|
||||
glance_image_create_poll_interval)
|
||||
glance_image_create_poll_interval)
|
||||
|
||||
finally:
|
||||
if "data" in kw:
|
||||
|
@@ -22,10 +22,6 @@ def is_temporary(resource):
|
||||
|
||||
|
||||
class KeystoneScenario(base.Scenario):
|
||||
"""This class should contain base operations for benchmarking keystone,
|
||||
most of them are creating/deleting resources.
|
||||
"""
|
||||
|
||||
RESOURCE_NAME_PREFIX = "rally_keystone_"
|
||||
|
||||
@scenario_utils.atomic_action_timer('keystone.create_user')
|
||||
|
@@ -45,8 +45,10 @@ class NeutronNetworks(utils.NeutronScenario):
|
||||
subnet_create_args=None,
|
||||
subnet_cidr_start=None,
|
||||
subnets_per_network=None):
|
||||
"""Create a network, a given number of subnets
|
||||
and then list all subnets.
|
||||
"""Test creating and listing a given number of subnets.
|
||||
|
||||
The scenario creates a network, a given number of subnets and then
|
||||
lists subnets.
|
||||
|
||||
:param network_create_args: dict, POST /v2.0/networks request options
|
||||
:param subnet_create_args: dict, POST /v2.0/subnets request options
|
||||
@@ -69,7 +71,9 @@ class NeutronNetworks(utils.NeutronScenario):
|
||||
subnet_cidr_start=None,
|
||||
subnets_per_network=None,
|
||||
router_create_args=None):
|
||||
"""Create a network, a given number of subnets and routers
|
||||
"""Test creating and listing a given number of routers.
|
||||
|
||||
Create a network, a given number of subnets and routers
|
||||
and then list all routers.
|
||||
|
||||
:param network_create_args: dict, POST /v2.0/networks request options
|
||||
|
@@ -14,6 +14,7 @@
|
||||
# under the License.
|
||||
|
||||
import multiprocessing
|
||||
|
||||
import netaddr
|
||||
|
||||
from rally.benchmark.scenarios import base
|
||||
@@ -21,9 +22,7 @@ from rally.benchmark.scenarios import utils as scenario_utils
|
||||
|
||||
|
||||
class NeutronScenario(base.Scenario):
|
||||
"""This class should contain base operations for benchmarking neutron,
|
||||
most of them are creating/deleting resources.
|
||||
"""
|
||||
"""This class should contain base operations for benchmarking neutron."""
|
||||
|
||||
RESOURCE_NAME_PREFIX = "rally_net_"
|
||||
SUBNET_IP_VERSION = 4
|
||||
@@ -33,8 +32,7 @@ class NeutronScenario(base.Scenario):
|
||||
|
||||
@classmethod
|
||||
def _generate_subnet_cidr(cls, network_id):
|
||||
"""Generate next subnet CIDR for given network,
|
||||
without IP overlapping.
|
||||
"""Generate next subnet CIDR for network, without IP overlapping.
|
||||
|
||||
:param network_id: str, network UUID for subnet
|
||||
:returns: str, next available subnet CIDR
|
||||
|
@@ -13,9 +13,10 @@
|
||||
# License for the specific language governing permissions and limitations
|
||||
# under the License.
|
||||
|
||||
import jsonschema
|
||||
import random
|
||||
|
||||
import jsonschema
|
||||
|
||||
from rally.benchmark.scenarios import base
|
||||
from rally.benchmark.scenarios.cinder import utils as cinder_utils
|
||||
from rally.benchmark.scenarios.nova import utils
|
||||
@@ -94,8 +95,11 @@ class NovaServers(utils.NovaScenario,
|
||||
@validation.add(validation.image_valid_on_flavor("flavor", "image"))
|
||||
@base.scenario(context={"cleanup": ["nova"]})
|
||||
def boot_and_bounce_server(self, image, flavor, **kwargs):
|
||||
"""Tests booting a server then performing stop/start or hard/soft
|
||||
reboot a number of times.
|
||||
"""Test booting a server with further performing specified actions.
|
||||
|
||||
Actions should be passed into kwargs. Available actions are
|
||||
'hard_reboot', 'soft_reboot', 'stop_start' and 'rescue_unrescue'.
|
||||
Delete server after all actions.
|
||||
"""
|
||||
action_builder = self._bind_actions()
|
||||
actions = kwargs.get('actions', [])
|
||||
@@ -190,6 +194,7 @@ class NovaServers(utils.NovaScenario,
|
||||
|
||||
def _rescue_and_unrescue_server(self, server):
|
||||
"""Rescue and then unrescue the given server.
|
||||
|
||||
A rescue will be issued on the given server upon which time
|
||||
this method will wait for the server to become 'RESCUE'.
|
||||
Once the server is RESCUE a unrescue will be issued and
|
||||
|
@@ -13,9 +13,10 @@
|
||||
# License for the specific language governing permissions and limitations
|
||||
# under the License.
|
||||
|
||||
from oslo.config import cfg
|
||||
import time
|
||||
|
||||
from oslo.config import cfg
|
||||
|
||||
from rally.benchmark.scenarios import base
|
||||
from rally.benchmark.scenarios import utils as scenario_utils
|
||||
from rally.benchmark import utils as bench_utils
|
||||
@@ -241,12 +242,12 @@ class NovaScenario(base.Scenario):
|
||||
:param image: Image object
|
||||
"""
|
||||
image.delete()
|
||||
check_interval = CONF.benchmark.nova_server_image_delete_poll_interval
|
||||
bench_utils.wait_for_delete(
|
||||
image,
|
||||
update_resource=bench_utils.get_from_manager(),
|
||||
timeout=CONF.benchmark.nova_server_image_delete_timeout,
|
||||
check_interval=
|
||||
CONF.benchmark.nova_server_image_delete_poll_interval
|
||||
check_interval=check_interval
|
||||
)
|
||||
|
||||
@scenario_utils.atomic_action_timer('nova.create_image')
|
||||
@@ -263,13 +264,13 @@ class NovaScenario(base.Scenario):
|
||||
image_uuid = self.clients("nova").servers.create_image(server,
|
||||
server.name)
|
||||
image = self.clients("nova").images.get(image_uuid)
|
||||
check_interval = CONF.benchmark.nova_server_image_create_poll_interval
|
||||
image = bench_utils.wait_for(
|
||||
image,
|
||||
is_ready=bench_utils.resource_is("ACTIVE"),
|
||||
update_resource=bench_utils.get_from_manager(),
|
||||
timeout=CONF.benchmark.nova_server_image_create_timeout,
|
||||
check_interval=
|
||||
CONF.benchmark.nova_server_image_create_poll_interval
|
||||
check_interval=check_interval
|
||||
)
|
||||
return image
|
||||
|
||||
|
@@ -14,10 +14,11 @@
|
||||
# under the License.
|
||||
|
||||
import os
|
||||
import six
|
||||
import subprocess
|
||||
import tempfile
|
||||
|
||||
import six
|
||||
|
||||
from rally import exceptions
|
||||
from rally.openstack.common.gettextutils import _
|
||||
|
||||
|
@@ -15,14 +15,14 @@
|
||||
# under the License.
|
||||
|
||||
import functools
|
||||
|
||||
import jsonschema
|
||||
|
||||
from rally import utils
|
||||
|
||||
|
||||
class ActionBuilder(object):
|
||||
"""Builder class for mapping and creating action objects into
|
||||
callable methods.
|
||||
"""Builder class for mapping and creating action objects.
|
||||
|
||||
An action list is an array of single key/value dicts which takes
|
||||
the form:
|
||||
@@ -56,8 +56,7 @@ class ActionBuilder(object):
|
||||
}
|
||||
|
||||
def __init__(self, action_keywords):
|
||||
"""Creates a new instance of the builder which supports the given
|
||||
action keywords.
|
||||
"""Create a new instance of the builder for the given action keywords.
|
||||
|
||||
:param action_keywords: A list of strings which are the keywords this
|
||||
instance of the builder supports.
|
||||
@@ -65,13 +64,13 @@ class ActionBuilder(object):
|
||||
self._bindings = {}
|
||||
self.schema = dict(ActionBuilder.SCHEMA_TEMPLATE)
|
||||
for kw in action_keywords:
|
||||
self.schema['items']['properties'][kw] =\
|
||||
ActionBuilder.ITEM_TEMPLATE
|
||||
self.schema['items']['properties'][kw] = (
|
||||
ActionBuilder.ITEM_TEMPLATE)
|
||||
|
||||
def bind_action(self, action_key, action, *args, **kwargs):
|
||||
"""Binds an action and optionally static args/kwargs to an
|
||||
action key.
|
||||
"""Bind an action to an action key.
|
||||
|
||||
Static args/kwargs can be optionally binded.
|
||||
:param action_key: The action keyword to bind the action to.
|
||||
:param action: A method/function to call for the action.
|
||||
:param args: (optional) Static positional args to prepend
|
||||
@@ -87,23 +86,24 @@ class ActionBuilder(object):
|
||||
}
|
||||
|
||||
def validate(self, actions):
|
||||
"""Validates the list of action objects against the schema
|
||||
for this builder.
|
||||
"""Validate the list of action objects against the builder schema.
|
||||
|
||||
:param actions: The list of action objects to validate.
|
||||
"""
|
||||
jsonschema.validate(actions, self.schema)
|
||||
|
||||
def _build(self, func, times, *args, **kwargs):
|
||||
"""Builds the wrapper action call."""
|
||||
"""Build the wrapper action call."""
|
||||
def _f():
|
||||
for i in range(times):
|
||||
func(*args, **kwargs)
|
||||
return _f
|
||||
|
||||
def build_actions(self, actions, *args, **kwargs):
|
||||
"""Builds a list of callable actions based on the given
|
||||
action object list and the actions bound to this builder.
|
||||
"""Build a list of callable actions.
|
||||
|
||||
A list of callable actions based on the given action object list and
|
||||
the actions bound to this builder.
|
||||
|
||||
:param actions: A list of action objects to build callable
|
||||
action for.
|
||||
@@ -129,8 +129,10 @@ class ActionBuilder(object):
|
||||
|
||||
|
||||
def atomic_action_timer(name):
|
||||
"""Decorates methods of the Scenario class requiring a measure of execution
|
||||
time. This provides duration in seconds of each atomic action.
|
||||
"""Provide measure of execution time.
|
||||
|
||||
Decorates methods of the Scenario class.
|
||||
This provides duration in seconds of each atomic action.
|
||||
"""
|
||||
def wrap(func):
|
||||
@functools.wraps(func)
|
||||
@@ -156,7 +158,8 @@ class AtomicAction(utils.Timer):
|
||||
"""
|
||||
|
||||
def __init__(self, scenario_instance, name):
|
||||
"""Constructor
|
||||
"""Create a new instance of the AtomicAction.
|
||||
|
||||
:param scenario_instance: instance of subclass of base scenario
|
||||
:param name: name of the ActionBuilder
|
||||
"""
|
||||
|
@@ -24,6 +24,7 @@ class VMScenario(base.Scenario):
|
||||
@scenario_utils.atomic_action_timer('vm.run_command')
|
||||
def run_action(self, ssh, interpreter, script):
|
||||
"""Run command inside an instance.
|
||||
|
||||
This is a separate function so that only script execution is timed
|
||||
"""
|
||||
return ssh.execute(interpreter, stdin=open(script, "rb"))
|
||||
@@ -34,7 +35,9 @@ class VMScenario(base.Scenario):
|
||||
|
||||
def run_command(self, server, username, network, port, ip_version,
|
||||
interpreter, script):
|
||||
"""Create SSH connection for server, wait for server to become
|
||||
"""Run command via SSH on server.
|
||||
|
||||
Create SSH connection for server, wait for server to become
|
||||
available (there is a delay between server being set to ACTIVE
|
||||
and sshd being available). Then call __run_command to actually
|
||||
execute the command.
|
||||
|
@@ -72,7 +72,7 @@ def _id_from_name(resource_config, resources, typename):
|
||||
raise exceptions.InvalidScenarioArgument(
|
||||
"{typename} 'id', 'name', or 'regex' not found "
|
||||
"in '{resource_config}' ".format(typename=typename.title(),
|
||||
resource_config=resource_config))
|
||||
resource_config=resource_config))
|
||||
|
||||
pattern = re.compile(patternstr)
|
||||
matching = filter(lambda resource: re.search(pattern, resource.name),
|
||||
@@ -80,13 +80,14 @@ def _id_from_name(resource_config, resources, typename):
|
||||
if not matching:
|
||||
raise exceptions.InvalidScenarioArgument(
|
||||
"{typename} with pattern '{pattern}' not found".format(
|
||||
typename=typename.title(), pattern=pattern.pattern))
|
||||
typename=typename.title(), pattern=pattern.pattern))
|
||||
elif len(matching) > 1:
|
||||
raise exceptions.InvalidScenarioArgument(
|
||||
"{typename} with name '{pattern}' is ambiguous, "
|
||||
"possible matches by id: {ids}".format(
|
||||
typename=typename.title(), pattern=pattern.pattern,
|
||||
ids=", ".join(map(operator.attrgetter("id"), matching))))
|
||||
"{typename} with name '{pattern}' is ambiguous, possible matches "
|
||||
"by id: {ids}".format(typename=typename.title(),
|
||||
pattern=pattern.pattern,
|
||||
ids=", ".join(map(operator.attrgetter("id"),
|
||||
matching))))
|
||||
return matching[0].id
|
||||
|
||||
|
||||
|
@@ -20,6 +20,7 @@ import time
|
||||
import traceback
|
||||
|
||||
from novaclient.v1_1 import servers
|
||||
|
||||
from rally import exceptions
|
||||
|
||||
|
||||
|
@@ -146,9 +146,9 @@ def image_exists(param_name):
|
||||
"""
|
||||
def image_exists_validator(**kwargs):
|
||||
clients = kwargs.get('clients')
|
||||
image_id = types.ImageResourceType.transform(clients=clients,
|
||||
resource_config=
|
||||
kwargs.get(param_name))
|
||||
image_id = types.ImageResourceType.transform(
|
||||
clients=clients,
|
||||
resource_config=kwargs.get(param_name))
|
||||
try:
|
||||
clients.glance().images.get(image=image_id)
|
||||
return ValidationResult()
|
||||
@@ -166,9 +166,9 @@ def flavor_exists(param_name):
|
||||
"""
|
||||
def flavor_exists_validator(**kwargs):
|
||||
clients = kwargs.get('clients')
|
||||
flavor_id = types.FlavorResourceType.transform(clients=clients,
|
||||
resource_config=
|
||||
kwargs.get(param_name))
|
||||
flavor_id = types.FlavorResourceType.transform(
|
||||
clients=clients,
|
||||
resource_config=kwargs.get(param_name))
|
||||
try:
|
||||
clients.nova().flavors.get(flavor=flavor_id)
|
||||
return ValidationResult()
|
||||
@@ -190,18 +190,18 @@ def image_valid_on_flavor(flavor_name, image_name):
|
||||
def image_valid_on_flavor_validator(**kwargs):
|
||||
clients = kwargs.get('clients')
|
||||
|
||||
flavor_id = types.FlavorResourceType.transform(clients=clients,
|
||||
resource_config=
|
||||
kwargs.get(flavor_name))
|
||||
flavor_id = types.FlavorResourceType.transform(
|
||||
clients=clients,
|
||||
resource_config=kwargs.get(flavor_name))
|
||||
try:
|
||||
flavor = clients.nova().flavors.get(flavor=flavor_id)
|
||||
except nova_exc.NotFound:
|
||||
message = _("Flavor with id '%s' not found") % flavor_id
|
||||
return ValidationResult(False, message)
|
||||
|
||||
image_id = types.ImageResourceType.transform(clients=clients,
|
||||
resource_config=
|
||||
kwargs.get(image_name))
|
||||
image_id = types.ImageResourceType.transform(
|
||||
clients=clients,
|
||||
resource_config=kwargs.get(image_name))
|
||||
try:
|
||||
image = clients.glance().images.get(image=image_id)
|
||||
except glance_exc.HTTPNotFound:
|
||||
|
@@ -148,6 +148,7 @@ class DeploymentCommands(object):
|
||||
@envutils.with_default_deploy_id
|
||||
def endpoint(self, deploy_id=None):
|
||||
"""Print endpoint of the deployment.
|
||||
|
||||
:param deploy_id: a UUID of the deployment
|
||||
"""
|
||||
headers = ['auth_url', 'username', 'password', 'tenant_name',
|
||||
|
@@ -16,14 +16,13 @@
|
||||
""" Rally command: task """
|
||||
|
||||
from __future__ import print_function
|
||||
|
||||
import json
|
||||
import os
|
||||
import pprint
|
||||
import webbrowser
|
||||
import yaml
|
||||
|
||||
from oslo.config import cfg
|
||||
import yaml
|
||||
|
||||
from rally.benchmark.processing import plot
|
||||
from rally.benchmark.processing import utils
|
||||
|
@@ -104,8 +104,10 @@ class UseCommands(object):
|
||||
@cliutils.args('--uuid', type=str, dest='task_id', required=False,
|
||||
help='UUID of the task')
|
||||
def task(self, task_id):
|
||||
"""Set the RALLY_TASK env var so the user does not need to specify a
|
||||
task UUID in the command requiring this parameter.
|
||||
"""Set the RALLY_TASK env var.
|
||||
|
||||
Is used to allow the user not to specify a task UUID in the command
|
||||
requiring this parameter.
|
||||
If the task uuid specified in parameter by the user does not exist,
|
||||
a TaskNotFound will be raised by task_get().
|
||||
|
||||
|
@@ -13,9 +13,10 @@
|
||||
# License for the specific language governing permissions and limitations
|
||||
# under the License.
|
||||
|
||||
import decorator
|
||||
import os
|
||||
|
||||
import decorator
|
||||
|
||||
from rally import exceptions
|
||||
from rally import fileutils
|
||||
from rally.openstack.common.gettextutils import _
|
||||
|
@@ -96,9 +96,8 @@ class Connection(object):
|
||||
return query
|
||||
|
||||
def _task_get(self, uuid, session=None):
|
||||
task = self.model_query(models.Task, session=session).\
|
||||
filter_by(uuid=uuid).\
|
||||
first()
|
||||
task = (self.model_query(models.Task, session=session).
|
||||
filter_by(uuid=uuid).first())
|
||||
if not task:
|
||||
raise exceptions.TaskNotFound(uuid=uuid)
|
||||
return task
|
||||
@@ -107,15 +106,14 @@ class Connection(object):
|
||||
return self._task_get(uuid)
|
||||
|
||||
def task_get_detailed(self, uuid):
|
||||
return self.model_query(models.Task).\
|
||||
options(sa.orm.joinedload('results')).\
|
||||
filter_by(uuid=uuid).\
|
||||
first()
|
||||
return (self.model_query(models.Task).
|
||||
options(sa.orm.joinedload('results')).
|
||||
filter_by(uuid=uuid).first())
|
||||
|
||||
def task_get_detailed_last(self):
|
||||
return self.model_query(models.Task).\
|
||||
options(sa.orm.joinedload('results')).\
|
||||
order_by(models.Task.id.desc()).first()
|
||||
return (self.model_query(models.Task).
|
||||
options(sa.orm.joinedload('results')).
|
||||
order_by(models.Task.id.desc()).first())
|
||||
|
||||
def task_create(self, values):
|
||||
task = models.Task()
|
||||
@@ -140,14 +138,13 @@ class Connection(object):
|
||||
def task_delete(self, uuid, status=None):
|
||||
session = get_session()
|
||||
with session.begin():
|
||||
query = base_query = self.model_query(models.Task).\
|
||||
filter_by(uuid=uuid)
|
||||
query = base_query = (self.model_query(models.Task).
|
||||
filter_by(uuid=uuid))
|
||||
if status is not None:
|
||||
query = base_query.filter_by(status=status)
|
||||
|
||||
self.model_query(models.TaskResult).\
|
||||
filter_by(task_uuid=uuid).\
|
||||
delete(synchronize_session=False)
|
||||
(self.model_query(models.TaskResult).filter_by(task_uuid=uuid).
|
||||
delete(synchronize_session=False))
|
||||
|
||||
count = query.delete(synchronize_session=False)
|
||||
if not count:
|
||||
@@ -166,14 +163,12 @@ class Connection(object):
|
||||
return result
|
||||
|
||||
def task_result_get_all_by_uuid(self, uuid):
|
||||
return self.model_query(models.TaskResult).\
|
||||
filter_by(task_uuid=uuid).\
|
||||
all()
|
||||
return (self.model_query(models.TaskResult).
|
||||
filter_by(task_uuid=uuid).all())
|
||||
|
||||
def _deployment_get(self, uuid, session=None):
|
||||
deploy = self.model_query(models.Deployment, session=session).\
|
||||
filter_by(uuid=uuid).\
|
||||
first()
|
||||
deploy = (self.model_query(models.Deployment, session=session).
|
||||
filter_by(uuid=uuid).first())
|
||||
if not deploy:
|
||||
raise exceptions.DeploymentNotFound(uuid=uuid)
|
||||
return deploy
|
||||
@@ -187,15 +182,13 @@ class Connection(object):
|
||||
def deployment_delete(self, uuid):
|
||||
session = get_session()
|
||||
with session.begin():
|
||||
count = self.model_query(models.Resource, session=session).\
|
||||
filter_by(deployment_uuid=uuid).\
|
||||
count()
|
||||
count = (self.model_query(models.Resource, session=session).
|
||||
filter_by(deployment_uuid=uuid).count())
|
||||
if count:
|
||||
raise exceptions.DeploymentIsBusy(uuid=uuid)
|
||||
|
||||
count = self.model_query(models.Deployment, session=session).\
|
||||
filter_by(uuid=uuid).\
|
||||
delete(synchronize_session=False)
|
||||
count = (self.model_query(models.Deployment, session=session).
|
||||
filter_by(uuid=uuid).delete(synchronize_session=False))
|
||||
if not count:
|
||||
raise exceptions.DeploymentNotFound(uuid=uuid)
|
||||
|
||||
@@ -211,8 +204,8 @@ class Connection(object):
|
||||
return deploy
|
||||
|
||||
def deployment_list(self, status=None, parent_uuid=None, name=None):
|
||||
query = self.model_query(models.Deployment).\
|
||||
filter_by(parent_uuid=parent_uuid)
|
||||
query = (self.model_query(models.Deployment).
|
||||
filter_by(parent_uuid=parent_uuid))
|
||||
|
||||
if name:
|
||||
query = query.filter_by(name=name)
|
||||
@@ -227,8 +220,8 @@ class Connection(object):
|
||||
return resource
|
||||
|
||||
def resource_get_all(self, deployment_uuid, provider_name=None, type=None):
|
||||
query = self.model_query(models.Resource).\
|
||||
filter_by(deployment_uuid=deployment_uuid)
|
||||
query = (self.model_query(models.Resource).
|
||||
filter_by(deployment_uuid=deployment_uuid))
|
||||
if provider_name is not None:
|
||||
query = query.filter_by(provider_name=provider_name)
|
||||
if type is not None:
|
||||
@@ -236,9 +229,8 @@ class Connection(object):
|
||||
return query.all()
|
||||
|
||||
def resource_delete(self, id):
|
||||
count = self.model_query(models.Resource).\
|
||||
filter_by(id=id).\
|
||||
delete(synchronize_session=False)
|
||||
count = (self.model_query(models.Resource).
|
||||
filter_by(id=id).delete(synchronize_session=False))
|
||||
if not count:
|
||||
raise exceptions.ResourceNotFound(id=id)
|
||||
|
||||
@@ -249,8 +241,8 @@ class Connection(object):
|
||||
return verification
|
||||
|
||||
def verification_get(self, verification_uuid, session=None):
|
||||
verification = self.model_query(models.Verification, session=session).\
|
||||
filter_by(uuid=verification_uuid).first()
|
||||
verification = (self.model_query(models.Verification, session=session).
|
||||
filter_by(uuid=verification_uuid).first())
|
||||
if not verification:
|
||||
raise exceptions.NotFoundException(
|
||||
"Can't find any verification with following UUID '%s'." %
|
||||
@@ -272,9 +264,9 @@ class Connection(object):
|
||||
return query.all()
|
||||
|
||||
def verification_delete(self, verification_uuid):
|
||||
count = self.model_query(models.Verification).\
|
||||
filter_by(id=verification_uuid).\
|
||||
delete(synchronize_session=False)
|
||||
count = (self.model_query(models.Verification).
|
||||
filter_by(id=verification_uuid).
|
||||
delete(synchronize_session=False))
|
||||
if not count:
|
||||
raise exceptions.NotFoundException(
|
||||
"Can't find any verification with following UUID '%s'." %
|
||||
@@ -288,8 +280,8 @@ class Connection(object):
|
||||
return result
|
||||
|
||||
def verification_result_get(self, verification_uuid):
|
||||
result = self.model_query(models.VerificationResult).\
|
||||
filter_by(verification_uuid=verification_uuid).first()
|
||||
result = (self.model_query(models.VerificationResult).
|
||||
filter_by(verification_uuid=verification_uuid).first())
|
||||
if not result:
|
||||
raise exceptions.NotFoundException(
|
||||
"No results for following UUID '%s'." % verification_uuid)
|
||||
|
@@ -15,10 +15,12 @@
|
||||
"""
|
||||
SQLAlchemy models for rally data.
|
||||
"""
|
||||
|
||||
import uuid
|
||||
|
||||
import sqlalchemy as sa
|
||||
from sqlalchemy.ext.declarative import declarative_base
|
||||
from sqlalchemy import types
|
||||
import uuid
|
||||
|
||||
from rally import consts
|
||||
from rally.db.sqlalchemy import types as sa_types
|
||||
@@ -65,7 +67,7 @@ class Deployment(BASE, RallyBase):
|
||||
completed_at = sa.Column(sa.DateTime)
|
||||
# XXX(akscram): Do we need to explicitly store a name of the
|
||||
# deployment engine?
|
||||
#engine_name = sa.Column(sa.String(36))
|
||||
# engine_name = sa.Column(sa.String(36))
|
||||
|
||||
config = sa.Column(
|
||||
sa_types.MutableJSONEncodedDict,
|
||||
|
@@ -13,9 +13,10 @@
|
||||
# License for the specific language governing permissions and limitations
|
||||
# under the License.
|
||||
|
||||
import netaddr
|
||||
import os
|
||||
|
||||
import netaddr
|
||||
|
||||
from rally.deploy import engine
|
||||
from rally.deploy.serverprovider import provider
|
||||
from rally.deploy.serverprovider.providers import lxc
|
||||
|
@@ -15,9 +15,10 @@
|
||||
|
||||
import json
|
||||
import re
|
||||
import requests
|
||||
import time
|
||||
|
||||
import requests
|
||||
|
||||
from rally.openstack.common import log as logging
|
||||
|
||||
LOG = logging.getLogger(__name__)
|
||||
|
@@ -148,6 +148,7 @@ class ProviderFactory(object):
|
||||
@abc.abstractmethod
|
||||
def create_servers(self, image_uuid=None, type_id=None, amount=1):
|
||||
"""Create VMs with chosen image.
|
||||
|
||||
:param image_uuid: Indetificator of image
|
||||
:param type_id: Vm type identificator
|
||||
:param amount: amount of required VMs
|
||||
|
@@ -13,12 +13,13 @@
|
||||
# License for the specific language governing permissions and limitations
|
||||
# under the License.
|
||||
|
||||
import netaddr
|
||||
import os
|
||||
import re
|
||||
import StringIO
|
||||
import time
|
||||
|
||||
import netaddr
|
||||
|
||||
from rally.deploy.serverprovider import provider
|
||||
from rally import exceptions
|
||||
from rally.openstack.common.gettextutils import _
|
||||
|
@@ -13,11 +13,12 @@
|
||||
# License for the specific language governing permissions and limitations
|
||||
# under the License.
|
||||
|
||||
import novaclient.exceptions
|
||||
import os
|
||||
import time
|
||||
import urllib2
|
||||
|
||||
import novaclient.exceptions
|
||||
|
||||
from rally.benchmark import utils as benchmark_utils
|
||||
from rally.deploy.serverprovider import provider
|
||||
from rally import exceptions
|
||||
|
@@ -13,17 +13,19 @@
|
||||
# License for the specific language governing permissions and limitations
|
||||
# under the License.
|
||||
|
||||
import netaddr
|
||||
import os
|
||||
import subprocess
|
||||
import time
|
||||
import uuid
|
||||
|
||||
import netaddr
|
||||
|
||||
from rally.deploy.serverprovider import provider
|
||||
|
||||
|
||||
class VirshProvider(provider.ProviderFactory):
|
||||
'''Creates VMs from prebuilt templates.
|
||||
"""Create VMs from prebuilt templates.
|
||||
|
||||
config example:
|
||||
"vm_provider": {
|
||||
"type": "VirshProvider",
|
||||
@@ -32,7 +34,7 @@ class VirshProvider(provider.ProviderFactory):
|
||||
"template_user": "ubuntu", # vm user to launch devstack
|
||||
"template_password": "password" # vm password to launch devstack
|
||||
},
|
||||
'''
|
||||
"""
|
||||
|
||||
CONFIG_SCHEMA = {
|
||||
'type': 'object',
|
||||
@@ -59,6 +61,7 @@ class VirshProvider(provider.ProviderFactory):
|
||||
|
||||
def create_servers(self, image_uuid=None, type_id=None, amount=1):
|
||||
"""Create VMs with chosen image.
|
||||
|
||||
:param image_uuid: Indetificator of image
|
||||
:param amount: amount of required VMs
|
||||
Returns list of VMs uuids.
|
||||
@@ -66,7 +69,7 @@ class VirshProvider(provider.ProviderFactory):
|
||||
return [self.create_vm(str(uuid.uuid4())) for i in range(amount)]
|
||||
|
||||
def create_vm(self, vm_name):
|
||||
'''Clones prebuilt VM template and starts it.'''
|
||||
"""Clone prebuilt VM template and start it."""
|
||||
|
||||
virt_url = self._get_virt_connection_url(self.config['connection'])
|
||||
cmd = 'virt-clone --connect=%(url)s -o %(t)s -n %(n)s --auto-clone' % {
|
||||
@@ -87,13 +90,13 @@ class VirshProvider(provider.ProviderFactory):
|
||||
)
|
||||
|
||||
def destroy_servers(self):
|
||||
'''Destroy already created vms.'''
|
||||
"""Destroy already created vms."""
|
||||
for resource in self.resources.get_all():
|
||||
self.destroy_vm(resource['info']['name'])
|
||||
self.resources.delete(resource)
|
||||
|
||||
def destroy_vm(self, vm_name):
|
||||
'''Destroy single vm and delete all allocated resources.'''
|
||||
"""Destroy single vm and delete all allocated resources."""
|
||||
print('Destroy VM %s' % vm_name)
|
||||
vconnection = self._get_virt_connection_url(self.config['connection'])
|
||||
|
||||
@@ -107,7 +110,7 @@ class VirshProvider(provider.ProviderFactory):
|
||||
|
||||
@staticmethod
|
||||
def _get_virt_connection_url(connection):
|
||||
'''Formats QEMU connection string from SSH url.'''
|
||||
"""Format QEMU connection string from SSH url."""
|
||||
return 'qemu+ssh://%s/system' % connection
|
||||
|
||||
def _determine_vm_ip(self, vm_name):
|
||||
|
@@ -14,9 +14,10 @@
|
||||
# under the License.
|
||||
|
||||
|
||||
from oslo.config import cfg
|
||||
import sys
|
||||
|
||||
from oslo.config import cfg
|
||||
|
||||
from rally.openstack.common.gettextutils import _
|
||||
from rally.openstack.common import log as logging
|
||||
|
||||
@@ -144,6 +145,10 @@ class NoSuchConfigField(NotFoundException):
|
||||
msg_fmt = _("There is no field in the task config with name `%(name)s`.")
|
||||
|
||||
|
||||
class NoSuchRole(NotFoundException):
|
||||
msg_fmt = _("There is no role with name `%(role)s`.")
|
||||
|
||||
|
||||
class TaskNotFound(NotFoundException):
|
||||
msg_fmt = _("Task with uuid=%(uuid)s not found.")
|
||||
|
||||
|
@@ -30,8 +30,8 @@ def _read_env_file(path, except_env=None):
|
||||
with open(path, 'r') as env_file:
|
||||
content = env_file.readlines()
|
||||
for line in content:
|
||||
if except_env is None or \
|
||||
not line.startswith("%s=" % except_env):
|
||||
if except_env is None or not line.startswith("%s=" %
|
||||
except_env):
|
||||
output.append(line)
|
||||
return output
|
||||
|
||||
|
@@ -13,6 +13,8 @@
|
||||
# License for the specific language governing permissions and limitations
|
||||
# under the License.
|
||||
|
||||
import urlparse
|
||||
|
||||
from ceilometerclient import client as ceilometer
|
||||
from cinderclient import client as cinder
|
||||
import glanceclient as glance
|
||||
@@ -23,7 +25,6 @@ from keystoneclient.v2_0 import client as keystone
|
||||
from neutronclient.neutron import client as neutron
|
||||
from novaclient import client as nova
|
||||
from oslo.config import cfg
|
||||
import urlparse
|
||||
|
||||
from rally import exceptions
|
||||
|
||||
|
@@ -57,12 +57,13 @@ Eventlet:
|
||||
|
||||
"""
|
||||
|
||||
import paramiko
|
||||
import select
|
||||
import socket
|
||||
import StringIO
|
||||
import time
|
||||
|
||||
import paramiko
|
||||
|
||||
from rally.openstack.common.gettextutils import _
|
||||
from rally.openstack.common import log as logging
|
||||
|
||||
|
@@ -15,13 +15,14 @@
|
||||
|
||||
import datetime
|
||||
import os
|
||||
from oslo.config import cfg
|
||||
from six.moves import configparser
|
||||
from six.moves import http_client as httplib
|
||||
import time
|
||||
import urllib2
|
||||
import urlparse
|
||||
|
||||
from oslo.config import cfg
|
||||
from six.moves import configparser
|
||||
from six.moves import http_client as httplib
|
||||
|
||||
from rally import db
|
||||
from rally import exceptions
|
||||
from rally.objects import endpoint
|
||||
@@ -184,8 +185,8 @@ class TempestConf(object):
|
||||
if public_net:
|
||||
net_id = public_net[0]['id']
|
||||
self.conf.set('network', 'public_network_id', net_id)
|
||||
public_router = neutron.list_routers(network_id=
|
||||
net_id)['routers'][0]
|
||||
public_router = neutron.list_routers(
|
||||
network_id=net_id)['routers'][0]
|
||||
self.conf.set('network', 'public_router_id',
|
||||
public_router['id'])
|
||||
subnet = neutron.list_subnets(network_id=net_id)['subnets'][0]
|
||||
|
@@ -16,7 +16,6 @@
|
||||
import mock
|
||||
|
||||
from rally.benchmark.context.cleanup import cleanup as cleanup_ctx
|
||||
|
||||
from tests import fakes
|
||||
from tests import test
|
||||
|
||||
|
@@ -14,9 +14,10 @@
|
||||
# under the License.
|
||||
|
||||
import copy
|
||||
import random
|
||||
|
||||
import jsonschema
|
||||
import mock
|
||||
import random
|
||||
|
||||
from rally.benchmark.context import quotas
|
||||
from tests import test
|
||||
@@ -74,10 +75,10 @@ class CinderQuotasTestCase(test.TestCase):
|
||||
pass
|
||||
# Currently, no method to delete quotas available in cinder client:
|
||||
# Will be added with https://review.openstack.org/#/c/74841/
|
||||
#cinder_quotas = quotas.CinderQuotas(client_mock)
|
||||
#tenant_id = mock.MagicMock()
|
||||
#cinder_quotas.delete(tenant_id)
|
||||
#client_mock.quotas.delete.assert_called_once_with(tenant_id)
|
||||
# cinder_quotas = quotas.CinderQuotas(client_mock)
|
||||
# tenant_id = mock.MagicMock()
|
||||
# cinder_quotas.delete(tenant_id)
|
||||
# client_mock.quotas.delete.assert_called_once_with(tenant_id)
|
||||
|
||||
|
||||
class NeutronQuotasTestCase(test.TestCase):
|
||||
@@ -187,8 +188,8 @@ class QuotasTestCase(test.TestCase):
|
||||
% ctx["config"]["quotas"][service][key])
|
||||
|
||||
# Test valid values
|
||||
ctx["config"]["quotas"][service][key] = \
|
||||
random.randint(0, 1000000)
|
||||
ctx["config"]["quotas"][service][key] = random.randint(0,
|
||||
1000000)
|
||||
try:
|
||||
quotas.Quotas.validate(ctx["config"]["quotas"])
|
||||
except jsonschema.ValidationError:
|
||||
|
@@ -16,6 +16,7 @@
|
||||
import mock
|
||||
|
||||
from rally.benchmark.context import roles
|
||||
from rally import exceptions
|
||||
from tests import fakes
|
||||
from tests import test
|
||||
|
||||
@@ -71,10 +72,10 @@ class RoleGeneratorTestCase(test.TestCase):
|
||||
ctx = roles.RoleGenerator(self.context)
|
||||
ctx.context["users"] = [{"id": "u1", "tenant_id": "t1"},
|
||||
{"id": "u2", "tenant_id": "t2"}]
|
||||
ex = self.assertRaises(Exception, ctx._add_role,
|
||||
ex = self.assertRaises(exceptions.NoSuchRole, ctx._add_role,
|
||||
mock.MagicMock(), "unknown_role")
|
||||
|
||||
expected = "Role 'unknown_role' does not exist in the list of roles"
|
||||
expected = "There is no role with name `unknown_role`."
|
||||
self.assertEqual(expected, str(ex))
|
||||
|
||||
@mock.patch("rally.benchmark.context.roles.osclients")
|
||||
@@ -88,8 +89,8 @@ class RoleGeneratorTestCase(test.TestCase):
|
||||
mock.call("u1", role["id"], tenant="t1"),
|
||||
mock.call("u2", role["id"], tenant="t2"),
|
||||
]
|
||||
mock_osclients.Clients().keystone()\
|
||||
.roles.remove_user_role.assert_has_calls(calls)
|
||||
mock_keystone = mock_osclients.Clients().keystone()
|
||||
mock_keystone.roles.remove_user_role.assert_has_calls(calls)
|
||||
|
||||
@mock.patch("rally.benchmark.context.roles.osclients")
|
||||
def test_setup_and_cleanup(self, mock_osclients):
|
||||
@@ -101,7 +102,6 @@ class RoleGeneratorTestCase(test.TestCase):
|
||||
ctx.context["users"] = [{"id": "u1", "tenant_id": "t1"},
|
||||
{"id": "u2", "tenant_id": "t2"}]
|
||||
|
||||
#self, user_id, role_id, tenant):
|
||||
ctx.setup()
|
||||
calls = [
|
||||
mock.call("u1", "r1", tenant="t1"),
|
||||
|
@@ -34,9 +34,9 @@ class SecGroupContextTestCase(test.TestCase):
|
||||
|
||||
self.assertEqual(len(fake_nova.security_groups.list()), 2)
|
||||
self.assertTrue(
|
||||
secgroup.SSH_GROUP_NAME in
|
||||
[sg.name for sg in fake_nova.security_groups.list()]
|
||||
)
|
||||
secgroup.SSH_GROUP_NAME in [
|
||||
sg.name for sg in fake_nova.security_groups.list()
|
||||
])
|
||||
|
||||
# run prep again, check that another security group is not created
|
||||
secgroup._prepare_open_secgroup('endpoint')
|
||||
@@ -46,7 +46,7 @@ class SecGroupContextTestCase(test.TestCase):
|
||||
def test_prep_ssh_sec_group_rules(self, mock_osclients):
|
||||
fake_nova = fakes.FakeNovaClient()
|
||||
|
||||
#NOTE(hughsaunders) Default security group is precreated
|
||||
# NOTE(hughsaunders) Default security group is precreated
|
||||
self.assertEqual(len(fake_nova.security_groups.list()), 1)
|
||||
mock_cl = mock.MagicMock()
|
||||
mock_cl.nova.return_value = fake_nova
|
||||
|
@@ -14,17 +14,18 @@
|
||||
# under the License.
|
||||
|
||||
import itertools
|
||||
import mock
|
||||
import uuid
|
||||
|
||||
import mock
|
||||
|
||||
from rally.benchmark.context import users
|
||||
from rally.benchmark import utils
|
||||
from tests import fakes
|
||||
from tests import test
|
||||
|
||||
|
||||
run_concurrent = lambda dummy, cls, f, args: \
|
||||
list(itertools.imap(getattr(cls, f), args))
|
||||
run_concurrent = (lambda dummy, cls, f, args: list(
|
||||
itertools.imap(getattr(cls, f), args)))
|
||||
|
||||
|
||||
@mock.patch.object(utils, "run_concurrent", run_concurrent)
|
||||
@@ -71,9 +72,9 @@ class UserGeneratorTestCase(test.TestCase):
|
||||
tenant2 = mock.MagicMock()
|
||||
args = (mock.MagicMock(), [tenant1, tenant2])
|
||||
users.UserGenerator._delete_tenants(args)
|
||||
mock_osclients.Clients().keystone()\
|
||||
.tenants.delete.assert_has_calls([mock.call(tenant1["id"]),
|
||||
mock.call(tenant2["id"])])
|
||||
mock_osclients.Clients().keystone().tenants.delete.assert_has_calls([
|
||||
mock.call(tenant1["id"]),
|
||||
mock.call(tenant2["id"])])
|
||||
|
||||
@mock.patch("rally.benchmark.context.users.osclients")
|
||||
def test_delete_users(self, mock_osclients):
|
||||
@@ -81,9 +82,9 @@ class UserGeneratorTestCase(test.TestCase):
|
||||
user2 = mock.MagicMock()
|
||||
args = (mock.MagicMock(), [user1, user2])
|
||||
users.UserGenerator._delete_users(args)
|
||||
mock_osclients.Clients().keystone()\
|
||||
.users.delete.assert_has_calls([mock.call(user1["id"]),
|
||||
mock.call(user2["id"])])
|
||||
mock_osclients.Clients().keystone().users.delete.assert_has_calls([
|
||||
mock.call(user1["id"]),
|
||||
mock.call(user2["id"])])
|
||||
|
||||
@mock.patch("rally.benchmark.context.users.osclients")
|
||||
def test_setup_and_cleanup(self, mock_osclients):
|
||||
|
@@ -14,6 +14,7 @@
|
||||
# under the License.
|
||||
|
||||
import json
|
||||
|
||||
import mock
|
||||
|
||||
from rally.benchmark.processing import plot
|
||||
|
@@ -16,7 +16,6 @@
|
||||
import mock
|
||||
|
||||
from rally.benchmark.runners import serial
|
||||
|
||||
from rally import consts
|
||||
from tests import fakes
|
||||
from tests import test
|
||||
|
@@ -13,6 +13,7 @@
|
||||
# under the License.
|
||||
|
||||
import json
|
||||
|
||||
import mock
|
||||
|
||||
from rally.benchmark.scenarios.ceilometer import queries
|
||||
|
@@ -82,9 +82,9 @@ class GlanceImagesTestCase(test.TestCase):
|
||||
mock_random_name.return_value = "random_name"
|
||||
kwargs = {'fakearg': 'f'}
|
||||
with mock.patch("rally.benchmark.scenarios.glance.utils.time.sleep"):
|
||||
glance_scenario.\
|
||||
create_image_and_boot_instances("cf", "url", "df",
|
||||
"fid", 5, **kwargs)
|
||||
glance_scenario.create_image_and_boot_instances("cf", "url",
|
||||
"df", "fid",
|
||||
5, **kwargs)
|
||||
mock_create_image.assert_called_once_with("random_name", "cf",
|
||||
"url", "df", **kwargs)
|
||||
mock_boot_servers.assert_called_once_with("random_name",
|
||||
|
@@ -90,10 +90,10 @@ class GlanceScenarioTestCase(test.TestCase):
|
||||
scenario = utils.GlanceScenario()
|
||||
scenario._delete_image(self.image)
|
||||
self.image.delete.assert_called_once_with()
|
||||
self.wait_for_delete.\
|
||||
mock.assert_called_once_with(self.image,
|
||||
update_resource=self.gfm(),
|
||||
check_interval=1,
|
||||
timeout=120)
|
||||
self.wait_for_delete.mock.assert_called_once_with(
|
||||
self.image,
|
||||
update_resource=self.gfm(),
|
||||
check_interval=1,
|
||||
timeout=120)
|
||||
self._test_atomic_action_timer(scenario.atomic_actions(),
|
||||
'glance.delete_image')
|
||||
|
@@ -60,8 +60,9 @@ class HeatScenarioTestCase(test.TestCase):
|
||||
|
||||
@mock.patch(HEAT_UTILS + '.HeatScenario.clients')
|
||||
def test_create_stack(self, mock_clients):
|
||||
mock_clients("heat").stacks.create.return_value = \
|
||||
{'stack': {'id': 'test_id'}}
|
||||
mock_clients("heat").stacks.create.return_value = {
|
||||
'stack': {'id': 'test_id'}
|
||||
}
|
||||
mock_clients("heat").stacks.get.return_value = self.stack
|
||||
scenario = utils.HeatScenario()
|
||||
return_stack = scenario._create_stack('stack_name')
|
||||
@@ -79,10 +80,10 @@ class HeatScenarioTestCase(test.TestCase):
|
||||
scenario = utils.HeatScenario()
|
||||
scenario._delete_stack(self.stack)
|
||||
self.stack.delete.assert_called_once_with()
|
||||
self.wait_for_delete.\
|
||||
mock.assert_called_once_with(self.stack,
|
||||
update_resource=self.gfm(),
|
||||
check_interval=1,
|
||||
timeout=3600)
|
||||
self.wait_for_delete.mock.assert_called_once_with(
|
||||
self.stack,
|
||||
update_resource=self.gfm(),
|
||||
check_interval=1,
|
||||
timeout=3600)
|
||||
self._test_atomic_action_timer(scenario.atomic_actions(),
|
||||
'heat.delete_stack')
|
||||
|
@@ -17,10 +17,8 @@ import mock
|
||||
|
||||
from rally.benchmark.scenarios.keystone import utils
|
||||
from tests.benchmark.scenarios import test_utils
|
||||
from tests import test
|
||||
|
||||
from tests import fakes
|
||||
|
||||
from tests import test
|
||||
|
||||
UTILS = "rally.benchmark.scenarios.keystone.utils."
|
||||
|
||||
|
@@ -16,7 +16,6 @@
|
||||
import mock
|
||||
|
||||
from rally.benchmark.scenarios.neutron import network
|
||||
|
||||
from tests import test
|
||||
|
||||
NEUTRON_NETWORKS = "rally.benchmark.scenarios.neutron.network.NeutronNetworks"
|
||||
|
@@ -18,7 +18,6 @@ import netaddr
|
||||
|
||||
from rally.benchmark.scenarios.neutron import utils
|
||||
from tests.benchmark.scenarios import test_utils
|
||||
|
||||
from tests import test
|
||||
|
||||
|
||||
@@ -99,8 +98,8 @@ class NeutronScenarioTestCase(test.TestCase):
|
||||
# Default options
|
||||
subnet_data = {"network_id": network_id}
|
||||
scenario._create_subnet(network, subnet_data)
|
||||
mock_clients("neutron")\
|
||||
.create_subnet.assert_called_once_with(expected_subnet_data)
|
||||
mock_clients("neutron").create_subnet.assert_called_once_with(
|
||||
expected_subnet_data)
|
||||
self._test_atomic_action_timer(scenario.atomic_actions(),
|
||||
"neutron.create_subnet")
|
||||
|
||||
@@ -111,14 +110,15 @@ class NeutronScenarioTestCase(test.TestCase):
|
||||
subnet_data.update(extras)
|
||||
expected_subnet_data["subnet"].update(extras)
|
||||
scenario._create_subnet(network, subnet_data)
|
||||
mock_clients("neutron")\
|
||||
.create_subnet.assert_called_once_with(expected_subnet_data)
|
||||
mock_clients("neutron").create_subnet.assert_called_once_with(
|
||||
expected_subnet_data)
|
||||
|
||||
@mock.patch(NEUTRON_UTILS + "NeutronScenario.clients")
|
||||
def test_list_subnets(self, mock_clients):
|
||||
subnets = [{"name": "fake1"}, {"name": "fake2"}]
|
||||
mock_clients("neutron")\
|
||||
.list_subnets.return_value = {"subnets": subnets}
|
||||
mock_clients("neutron").list_subnets.return_value = {
|
||||
"subnets": subnets
|
||||
}
|
||||
scenario = utils.NeutronScenario()
|
||||
result = scenario._list_subnets()
|
||||
self.assertEqual(subnets, result)
|
||||
|
@@ -244,10 +244,10 @@ class NovaServersTestCase(test.TestCase):
|
||||
@mock.patch("rally.benchmark.scenarios.nova.servers.random.choice")
|
||||
def _verify_boot_server(self, mock_choice, mock_osclients, nic=None,
|
||||
assert_nic=False):
|
||||
scenario, kwargs, expected_kwargs = \
|
||||
self._prepare_boot(mock_osclients=mock_osclients,
|
||||
mock_choice=mock_choice,
|
||||
nic=nic, assert_nic=assert_nic)
|
||||
scenario, kwargs, expected_kwargs = self._prepare_boot(
|
||||
mock_osclients=mock_osclients,
|
||||
mock_choice=mock_choice,
|
||||
nic=nic, assert_nic=assert_nic)
|
||||
|
||||
scenario.boot_server("img", 0, **kwargs)
|
||||
scenario._boot_server.assert_called_once_with("name", "img", 0,
|
||||
@@ -277,10 +277,10 @@ class NovaServersTestCase(test.TestCase):
|
||||
def test_boot_server_from_volume_random_nic(self, mock_choice,
|
||||
mock_osclients,
|
||||
mock_nova_clients):
|
||||
scenario, kwargs, expected_kwargs = \
|
||||
self._prepare_boot(mock_osclients=mock_osclients,
|
||||
mock_choice=mock_choice,
|
||||
nic=None, assert_nic=True)
|
||||
scenario, kwargs, expected_kwargs = self._prepare_boot(
|
||||
mock_osclients=mock_osclients,
|
||||
mock_choice=mock_choice,
|
||||
nic=None, assert_nic=True)
|
||||
|
||||
fake_volume = fakes.FakeVolumeManager().create()
|
||||
fake_volume.id = "volume_id"
|
||||
|
@@ -109,12 +109,12 @@ class NovaScenarioTestCase(test.TestCase):
|
||||
mock_clients("nova").images.get.return_value = self.image
|
||||
nova_scenario = utils.NovaScenario()
|
||||
return_image = nova_scenario._create_image(self.server)
|
||||
check_interval = CONF.benchmark.nova_server_image_create_poll_interval
|
||||
self.wait_for.mock.assert_called_once_with(
|
||||
self.image,
|
||||
update_resource=self.gfm(),
|
||||
is_ready=self.res_is.mock(),
|
||||
check_interval=
|
||||
CONF.benchmark.nova_server_image_create_poll_interval,
|
||||
check_interval=check_interval,
|
||||
timeout=CONF.benchmark.nova_server_image_create_timeout
|
||||
)
|
||||
self.res_is.mock.assert_has_calls(mock.call('ACTIVE'))
|
||||
@@ -216,17 +216,16 @@ class NovaScenarioTestCase(test.TestCase):
|
||||
self.server1]
|
||||
nova_scenario = utils.NovaScenario()
|
||||
nova_scenario._delete_all_servers()
|
||||
check_interval = CONF.benchmark.nova_server_delete_poll_interval
|
||||
expected = [
|
||||
mock.call(
|
||||
self.server, update_resource=self.gfm(),
|
||||
check_interval=
|
||||
CONF.benchmark.nova_server_delete_poll_interval,
|
||||
check_interval=check_interval,
|
||||
timeout=CONF.benchmark.nova_server_delete_timeout
|
||||
),
|
||||
mock.call(
|
||||
self.server1, update_resource=self.gfm(),
|
||||
check_interval=
|
||||
CONF.benchmark.nova_server_delete_poll_interval,
|
||||
check_interval=check_interval,
|
||||
timeout=CONF.benchmark.nova_server_delete_timeout
|
||||
)
|
||||
]
|
||||
@@ -238,10 +237,10 @@ class NovaScenarioTestCase(test.TestCase):
|
||||
nova_scenario = utils.NovaScenario()
|
||||
nova_scenario._delete_image(self.image)
|
||||
self.image.delete.assert_called_once_with()
|
||||
check_interval = CONF.benchmark.nova_server_image_delete_poll_interval
|
||||
self.wait_for_delete.mock.assert_called_once_with(
|
||||
self.image, update_resource=self.gfm(),
|
||||
check_interval=
|
||||
CONF.benchmark.nova_server_image_delete_poll_interval,
|
||||
check_interval=check_interval,
|
||||
timeout=CONF.benchmark.nova_server_image_delete_timeout
|
||||
)
|
||||
self._test_atomic_action_timer(nova_scenario.atomic_actions(),
|
||||
|
@@ -13,9 +13,10 @@
|
||||
# License for the specific language governing permissions and limitations
|
||||
# under the License.
|
||||
|
||||
import mock
|
||||
import traceback
|
||||
|
||||
import mock
|
||||
|
||||
from rally.benchmark.context import base as base_ctx
|
||||
from rally.benchmark.scenarios import base
|
||||
from rally.benchmark import validation
|
||||
@@ -255,8 +256,9 @@ class ScenarioTestCase(test.TestCase):
|
||||
"prefix_")
|
||||
def test_generate_random_name(self):
|
||||
set_by_length = lambda lst: set(map(len, lst))
|
||||
len_by_prefix = lambda lst, prefix:\
|
||||
len(filter(bool, map(lambda i: i.startswith(prefix), lst)))
|
||||
len_by_prefix = (lambda lst, prefix:
|
||||
len(filter(bool, map(lambda i: i.startswith(prefix),
|
||||
lst))))
|
||||
range_num = 50
|
||||
|
||||
# Defaults
|
||||
|
@@ -14,9 +14,9 @@
|
||||
# License for the specific language governing permissions and limitations
|
||||
# under the License.
|
||||
|
||||
from jsonschema import exceptions as schema_exceptions
|
||||
import mock
|
||||
|
||||
from jsonschema import exceptions as schema_exceptions
|
||||
from rally.benchmark.scenarios import utils
|
||||
from tests import test
|
||||
|
||||
|
@@ -67,8 +67,8 @@ class BenchmarkEngineTestCase(test.TestCase):
|
||||
def test_validate__wrong_scenarios_name(self, mova_validate):
|
||||
task = mock.MagicMock()
|
||||
eng = engine.BenchmarkEngine(mock.MagicMock(), task)
|
||||
eng._validate_config_scenarios_name = \
|
||||
mock.MagicMock(side_effect=exceptions.NotFoundScenarios)
|
||||
eng._validate_config_scenarios_name = mock.MagicMock(
|
||||
side_effect=exceptions.NotFoundScenarios)
|
||||
|
||||
self.assertRaises(exceptions.InvalidTaskException, eng.validate)
|
||||
self.assertTrue(task.set_failed.called)
|
||||
@@ -78,8 +78,8 @@ class BenchmarkEngineTestCase(test.TestCase):
|
||||
task = mock.MagicMock()
|
||||
eng = engine.BenchmarkEngine(mock.MagicMock(), task)
|
||||
eng._validate_config_scenarios_name = mock.MagicMock()
|
||||
eng._validate_config_syntax = \
|
||||
mock.MagicMock(side_effect=exceptions.InvalidBenchmarkConfig)
|
||||
eng._validate_config_syntax = mock.MagicMock(
|
||||
side_effect=exceptions.InvalidBenchmarkConfig)
|
||||
|
||||
self.assertRaises(exceptions.InvalidTaskException, eng.validate)
|
||||
self.assertTrue(task.set_failed.called)
|
||||
@@ -90,8 +90,8 @@ class BenchmarkEngineTestCase(test.TestCase):
|
||||
eng = engine.BenchmarkEngine(mock.MagicMock(), task)
|
||||
eng._validate_config_scenarios_name = mock.MagicMock()
|
||||
eng._validate_config_syntax = mock.MagicMock()
|
||||
eng._validate_config_semantic = \
|
||||
mock.MagicMock(side_effect=exceptions.InvalidBenchmarkConfig)
|
||||
eng._validate_config_semantic = mock.MagicMock(
|
||||
side_effect=exceptions.InvalidBenchmarkConfig)
|
||||
|
||||
self.assertRaises(exceptions.InvalidTaskException, eng.validate)
|
||||
self.assertTrue(task.set_failed.called)
|
||||
|
@@ -15,7 +15,6 @@
|
||||
|
||||
from rally.benchmark import types
|
||||
from rally import exceptions
|
||||
|
||||
from tests import fakes
|
||||
from tests import test
|
||||
|
||||
@@ -32,23 +31,23 @@ class FlavorResourceTypeTestCase(test.TestCase):
|
||||
|
||||
def test_transform_by_id(self):
|
||||
resource_config = {"id": 42}
|
||||
flavor_id = types.FlavorResourceType.transform(clients=self.clients,
|
||||
resource_config=
|
||||
resource_config)
|
||||
flavor_id = types.FlavorResourceType.transform(
|
||||
clients=self.clients,
|
||||
resource_config=resource_config)
|
||||
self.assertEqual(flavor_id, 42)
|
||||
|
||||
def test_transform_by_name(self):
|
||||
resource_config = {"name": "m1.nano"}
|
||||
flavor_id = types.FlavorResourceType.transform(clients=self.clients,
|
||||
resource_config=
|
||||
resource_config)
|
||||
flavor_id = types.FlavorResourceType.transform(
|
||||
clients=self.clients,
|
||||
resource_config=resource_config)
|
||||
self.assertEqual(flavor_id, 42)
|
||||
|
||||
def test_transform_by_name_to_dest(self):
|
||||
resource_config = {"name": "m1.nano"}
|
||||
flavor_id = types.FlavorResourceType.transform(clients=self.clients,
|
||||
resource_config=
|
||||
resource_config)
|
||||
flavor_id = types.FlavorResourceType.transform(
|
||||
clients=self.clients,
|
||||
resource_config=resource_config)
|
||||
self.assertEqual(flavor_id, 42)
|
||||
|
||||
def test_transform_by_name_no_match(self):
|
||||
@@ -59,9 +58,9 @@ class FlavorResourceTypeTestCase(test.TestCase):
|
||||
|
||||
def test_transform_by_regex(self):
|
||||
resource_config = {"regex": "m(1|2)\.nano"}
|
||||
flavor_id = types.FlavorResourceType.transform(clients=self.clients,
|
||||
resource_config=
|
||||
resource_config)
|
||||
flavor_id = types.FlavorResourceType.transform(
|
||||
clients=self.clients,
|
||||
resource_config=resource_config)
|
||||
self.assertEqual(flavor_id, 42)
|
||||
|
||||
def test_transform_by_regex_no_match(self):
|
||||
@@ -83,23 +82,23 @@ class ImageResourceTypeTestCase(test.TestCase):
|
||||
|
||||
def test_transform_by_id(self):
|
||||
resource_config = {"id": 100}
|
||||
image_id = types.ImageResourceType.transform(clients=self.clients,
|
||||
resource_config=
|
||||
resource_config)
|
||||
image_id = types.ImageResourceType.transform(
|
||||
clients=self.clients,
|
||||
resource_config=resource_config)
|
||||
self.assertEqual(image_id, 100)
|
||||
|
||||
def test_transform_by_name(self):
|
||||
resource_config = {"name": "cirros-0.3.1-uec"}
|
||||
image_id = types.ImageResourceType.transform(clients=self.clients,
|
||||
resource_config=
|
||||
resource_config)
|
||||
image_id = types.ImageResourceType.transform(
|
||||
clients=self.clients,
|
||||
resource_config=resource_config)
|
||||
self.assertEqual(image_id, 100)
|
||||
|
||||
def test_transform_by_name_to_dest(self):
|
||||
resource_config = {"name": "cirros-0.3.1-uec"}
|
||||
image_id = types.ImageResourceType.transform(clients=self.clients,
|
||||
resource_config=
|
||||
resource_config)
|
||||
image_id = types.ImageResourceType.transform(
|
||||
clients=self.clients,
|
||||
resource_config=resource_config)
|
||||
self.assertEqual(image_id, 100)
|
||||
|
||||
def test_transform_by_name_no_match(self):
|
||||
@@ -110,9 +109,9 @@ class ImageResourceTypeTestCase(test.TestCase):
|
||||
|
||||
def test_transform_by_regex(self):
|
||||
resource_config = {"regex": "-uec$"}
|
||||
image_id = types.ImageResourceType.transform(clients=self.clients,
|
||||
resource_config=
|
||||
resource_config)
|
||||
image_id = types.ImageResourceType.transform(
|
||||
clients=self.clients,
|
||||
resource_config=resource_config)
|
||||
self.assertEqual(image_id, 100)
|
||||
|
||||
def test_transform_by_regex_no_match(self):
|
||||
|
@@ -13,14 +13,14 @@
|
||||
# License for the specific language governing permissions and limitations
|
||||
# under the License.
|
||||
|
||||
import mock
|
||||
|
||||
import datetime
|
||||
from tests import fakes
|
||||
from tests import test
|
||||
|
||||
import mock
|
||||
|
||||
from rally.benchmark import utils
|
||||
from rally import exceptions
|
||||
from tests import fakes
|
||||
from tests import test
|
||||
|
||||
|
||||
class BenchmarkUtilsTestCase(test.TestCase):
|
||||
|
@@ -13,10 +13,10 @@
|
||||
# License for the specific language governing permissions and limitations
|
||||
# under the License.
|
||||
|
||||
import mock
|
||||
import os
|
||||
|
||||
from glanceclient import exc as glance_exc
|
||||
import mock
|
||||
from novaclient import exceptions as nova_exc
|
||||
|
||||
from rally.benchmark import validation
|
||||
|
@@ -13,10 +13,11 @@
|
||||
# License for the specific language governing permissions and limitations
|
||||
# under the License.
|
||||
|
||||
import mock
|
||||
import os
|
||||
import uuid
|
||||
|
||||
import mock
|
||||
|
||||
from rally.cmd.commands import deployment
|
||||
from rally import exceptions
|
||||
from tests import test
|
||||
|
@@ -13,9 +13,10 @@
|
||||
# License for the specific language governing permissions and limitations
|
||||
# under the License.
|
||||
|
||||
import mock
|
||||
import uuid
|
||||
|
||||
import mock
|
||||
|
||||
from rally.cmd.commands import show
|
||||
from tests import fakes
|
||||
from tests import test
|
||||
|
@@ -13,9 +13,10 @@
|
||||
# License for the specific language governing permissions and limitations
|
||||
# under the License.
|
||||
|
||||
import mock
|
||||
import uuid
|
||||
|
||||
import mock
|
||||
|
||||
from rally.cmd.commands import task
|
||||
from rally import exceptions
|
||||
from tests import test
|
||||
|
@@ -13,10 +13,11 @@
|
||||
# License for the specific language governing permissions and limitations
|
||||
# under the License.
|
||||
|
||||
import mock
|
||||
import os
|
||||
import uuid
|
||||
|
||||
import mock
|
||||
|
||||
from rally.cmd.commands import use
|
||||
from rally.cmd import envutils
|
||||
from rally import exceptions
|
||||
|
@@ -13,9 +13,10 @@
|
||||
# License for the specific language governing permissions and limitations
|
||||
# under the License.
|
||||
|
||||
import mock
|
||||
import uuid
|
||||
|
||||
import mock
|
||||
|
||||
from rally.cmd.commands import verify
|
||||
from rally import consts
|
||||
from tests import test
|
||||
|
@@ -14,7 +14,6 @@
|
||||
# under the License.
|
||||
|
||||
from rally.cmd import cliutils
|
||||
|
||||
from tests import test
|
||||
|
||||
|
||||
|
@@ -13,10 +13,11 @@
|
||||
# License for the specific language governing permissions and limitations
|
||||
# under the License.
|
||||
|
||||
import mock
|
||||
import os
|
||||
import StringIO
|
||||
|
||||
import mock
|
||||
|
||||
from rally.cmd import envutils
|
||||
from rally import exceptions
|
||||
from tests import test
|
||||
@@ -94,7 +95,7 @@ class EnvUtilsTestCase(test.TestCase):
|
||||
|
||||
@mock.patch.dict(os.environ,
|
||||
values={envutils.ENV_DEPLOYMENT: 'test_deployment_id',
|
||||
envutils.ENV_TASK: 'test_task_id'},
|
||||
envutils.ENV_TASK: 'test_task_id'},
|
||||
clear=True)
|
||||
@mock.patch('os.path.exists')
|
||||
@mock.patch('rally.cmd.envutils.fileutils.update_env_file')
|
||||
|
@@ -13,10 +13,11 @@
|
||||
# License for the specific language governing permissions and limitations
|
||||
# under the License.
|
||||
|
||||
import mock
|
||||
import sys
|
||||
import uuid
|
||||
|
||||
import mock
|
||||
|
||||
from rally.cmd import manage
|
||||
from tests import test
|
||||
|
||||
|
@@ -13,9 +13,10 @@
|
||||
# License for the specific language governing permissions and limitations
|
||||
# under the License.
|
||||
|
||||
import uuid
|
||||
|
||||
import jsonschema
|
||||
import mock
|
||||
import uuid
|
||||
|
||||
from rally.deploy.engines import devstack
|
||||
from tests import test
|
||||
|
@@ -163,13 +163,13 @@ class LxcHostTestCase(test.TestCase):
|
||||
self.assertEqual(['name'], self.host.containers)
|
||||
self.host.configure_container.assert_called_once_with('name')
|
||||
|
||||
#check with no btrfs
|
||||
# check with no btrfs
|
||||
self.host._backingstore = ''
|
||||
self.host.create_container('name', 'dist')
|
||||
self.assertEqual(mock.call('lxc-create -n name -t dist'),
|
||||
self.server.ssh.run.mock_calls[1])
|
||||
|
||||
#check release
|
||||
# check release
|
||||
self.host.create_container('name', 'ubuntu', 'raring')
|
||||
self.host.create_container('name', 'debian', 'woody')
|
||||
expected = [mock.call('lxc-create -n name -t ubuntu -- -r raring'),
|
||||
@@ -184,7 +184,7 @@ class LxcHostTestCase(test.TestCase):
|
||||
' -o src -n name')
|
||||
self.assertEqual(['name'], self.host.containers)
|
||||
|
||||
#check with no btrfs
|
||||
# check with no btrfs
|
||||
self.host._backingstore = ''
|
||||
self.host.create_clone('name', 'src')
|
||||
self.assertEqual(mock.call('lxc-clone -o src -n name'),
|
||||
|
@@ -16,7 +16,6 @@
|
||||
"""Tests for OpenStack VM provider."""
|
||||
|
||||
import jsonschema
|
||||
|
||||
import mock
|
||||
from oslotest import mockpatch
|
||||
|
||||
|
@@ -13,11 +13,11 @@
|
||||
# License for the specific language governing permissions and limitations
|
||||
# under the License.
|
||||
|
||||
import jsonschema
|
||||
import netaddr
|
||||
import os
|
||||
|
||||
import jsonschema
|
||||
import mock
|
||||
import netaddr
|
||||
from oslotest import mockpatch
|
||||
|
||||
from rally.deploy.serverprovider.providers import virsh
|
||||
|
@@ -15,9 +15,10 @@
|
||||
|
||||
"""Test for deploy engines."""
|
||||
|
||||
import mock
|
||||
import uuid
|
||||
|
||||
import mock
|
||||
|
||||
from rally import consts
|
||||
from rally import deploy
|
||||
from rally import exceptions
|
||||
|
@@ -14,9 +14,10 @@
|
||||
# under the License.
|
||||
|
||||
|
||||
import mock
|
||||
import uuid
|
||||
|
||||
import mock
|
||||
|
||||
from rally import consts
|
||||
from rally import deploy
|
||||
from tests import fakes
|
||||
|
@@ -19,12 +19,12 @@ import re
|
||||
import string
|
||||
import uuid
|
||||
|
||||
import mock
|
||||
|
||||
from ceilometerclient import exc as ceilometer_exc
|
||||
from glanceclient import exc
|
||||
import mock
|
||||
from neutronclient.common import exceptions as neutron_exceptions
|
||||
from novaclient import exceptions as nova_exceptions
|
||||
|
||||
from rally.benchmark.context import base as base_ctx
|
||||
from rally.benchmark.scenarios import base
|
||||
from rally.objects import endpoint
|
||||
@@ -57,6 +57,7 @@ def generate_mac():
|
||||
|
||||
def setup_dict(data, required=None, defaults=None):
|
||||
"""Setup and validate dict based on mandatory keys and default data.
|
||||
|
||||
This function reduces code that constructs dict objects
|
||||
with specific schema (e.g. for API data).
|
||||
|
||||
@@ -620,8 +621,8 @@ class FakeNeutronClient(object):
|
||||
def add_interface_router(self, router_id, data):
|
||||
subnet_id = data["subnet_id"]
|
||||
|
||||
if router_id not in self.__routers\
|
||||
or subnet_id not in self.__subnets:
|
||||
if (router_id not in self.__routers or
|
||||
subnet_id not in self.__subnets):
|
||||
raise neutron_exceptions.NeutronClientException
|
||||
|
||||
subnet = self.__subnets[subnet_id]
|
||||
@@ -769,8 +770,8 @@ class FakeNeutronClient(object):
|
||||
def remove_interface_router(self, router_id, data):
|
||||
subnet_id = data["subnet_id"]
|
||||
|
||||
if router_id not in self.__routers\
|
||||
or subnet_id not in self.__subnets:
|
||||
if (router_id not in self.__routers
|
||||
or subnet_id not in self.__subnets):
|
||||
raise neutron_exceptions.NeutronClientException
|
||||
|
||||
subnet = self.__subnets[subnet_id]
|
||||
|
@@ -15,9 +15,10 @@
|
||||
|
||||
"""Tests for db.deploy layer."""
|
||||
|
||||
import mock
|
||||
import uuid
|
||||
|
||||
import mock
|
||||
|
||||
from rally import consts
|
||||
from rally import objects
|
||||
from tests import test
|
||||
|
@@ -16,9 +16,10 @@
|
||||
"""Tests for db.task layer."""
|
||||
|
||||
import json
|
||||
import mock
|
||||
import uuid
|
||||
|
||||
import mock
|
||||
|
||||
from rally import consts
|
||||
from rally import objects
|
||||
from tests import test
|
||||
|
@@ -15,9 +15,10 @@
|
||||
|
||||
""" Test for orchestrator. """
|
||||
|
||||
import mock
|
||||
import uuid
|
||||
|
||||
import mock
|
||||
|
||||
from rally.benchmark.scenarios import base
|
||||
from rally import consts
|
||||
from rally.orchestrator import api
|
||||
|
@@ -14,7 +14,6 @@
|
||||
# under the License.
|
||||
|
||||
import mock
|
||||
|
||||
from oslotest import base
|
||||
|
||||
from rally import db
|
||||
|
@@ -12,9 +12,11 @@
|
||||
# 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 mock
|
||||
|
||||
import os
|
||||
|
||||
import mock
|
||||
|
||||
from rally import fileutils
|
||||
from tests import test
|
||||
|
||||
|
@@ -13,12 +13,13 @@
|
||||
# License for the specific language governing permissions and limitations
|
||||
# under the License.
|
||||
|
||||
import copy
|
||||
|
||||
import mock
|
||||
|
||||
from rally.deploy.fuel import fuelclient
|
||||
from tests import test
|
||||
|
||||
import copy
|
||||
import mock
|
||||
|
||||
|
||||
class FuelNodeTestCase(test.TestCase):
|
||||
|
||||
|
@@ -13,9 +13,8 @@
|
||||
# License for the specific language governing permissions and limitations
|
||||
# under the License.
|
||||
|
||||
import mock
|
||||
|
||||
from keystoneclient import exceptions as keystone_exceptions
|
||||
import mock
|
||||
from oslo.config import cfg
|
||||
|
||||
from rally import exceptions
|
||||
@@ -49,8 +48,8 @@ class OSClientsTestCase(test.TestCase):
|
||||
@mock.patch("rally.osclients.Clients.keystone")
|
||||
def test_verified_keystone_user_not_admin(self, mock_keystone):
|
||||
mock_keystone.return_value = fakes.FakeKeystoneClient()
|
||||
mock_keystone.return_value.auth_ref["user"]["roles"] = \
|
||||
[{"name": "notadmin"}]
|
||||
mock_keystone.return_value.auth_ref["user"]["roles"] = [{"name":
|
||||
"notadmin"}]
|
||||
self.assertRaises(exceptions.InvalidAdminException,
|
||||
self.clients.verified_keystone)
|
||||
|
||||
|
@@ -16,11 +16,11 @@
|
||||
"""Test for Rally utils."""
|
||||
|
||||
from __future__ import print_function
|
||||
|
||||
import mock
|
||||
import sys
|
||||
import time
|
||||
|
||||
import mock
|
||||
|
||||
from rally import exceptions
|
||||
from rally.openstack.common.gettextutils import _
|
||||
from rally import utils
|
||||
|
@@ -13,8 +13,9 @@
|
||||
# License for the specific language governing permissions and limitations
|
||||
# under the License.
|
||||
|
||||
import mock
|
||||
import os
|
||||
|
||||
import mock
|
||||
from oslo.config import cfg
|
||||
from six.moves import http_client as httplib
|
||||
|
||||
@@ -78,10 +79,11 @@ class ConfigTestCase(test.TestCase):
|
||||
service = "test_service"
|
||||
url = "test_url"
|
||||
# mocked at setUp
|
||||
self.conf_generator.keystoneclient.auth_ref = {"serviceCatalog":
|
||||
[{"name": service,
|
||||
"endpoints":
|
||||
[{"publicURL": url}]}]}
|
||||
self.conf_generator.keystoneclient.auth_ref = {
|
||||
"serviceCatalog": [{
|
||||
"name": service,
|
||||
"endpoints": [{"publicURL": url}]
|
||||
}]}
|
||||
self.assertEqual(self.conf_generator._get_url(service), url)
|
||||
|
||||
@mock.patch("rally.verification.verifiers.tempest.config.TempestConf"
|
||||
|
@@ -13,9 +13,10 @@
|
||||
# License for the specific language governing permissions and limitations
|
||||
# under the License.
|
||||
|
||||
import mock
|
||||
import os
|
||||
|
||||
import mock
|
||||
|
||||
from rally.verification.verifiers.tempest import tempest
|
||||
from tests import test
|
||||
|
||||
|
@@ -14,13 +14,14 @@
|
||||
# under the License.
|
||||
|
||||
import ConfigParser
|
||||
import mock
|
||||
import os
|
||||
import shutil
|
||||
import subprocess
|
||||
import tempfile
|
||||
import unittest
|
||||
|
||||
import mock
|
||||
|
||||
|
||||
"""Test rally command line interface.
|
||||
|
||||
|
Reference in New Issue
Block a user