diff --git a/rally-jobs/kuryr.yaml b/rally-jobs/kuryr.yaml index c4a764e5..5441e8cf 100644 --- a/rally-jobs/kuryr.yaml +++ b/rally-jobs/kuryr.yaml @@ -1,5 +1,5 @@ --- - NeutronNetworks.create_and_list_networks: + Kuryr.list_networks: - runner: type: "constant" @@ -7,8 +7,8 @@ concurrency: 20 context: users: - tenants: 1 - users_per_tenant: 1 + tenants: 2 + users_per_tenant: 2 quotas: neutron: network: -1 diff --git a/rally-jobs/plugins/scenarios/__init__.py b/rally-jobs/plugins/scenarios/__init__.py new file mode 100644 index 00000000..e69de29b diff --git a/rally-jobs/plugins/scenarios/kuryr.py b/rally-jobs/plugins/scenarios/kuryr.py new file mode 100644 index 00000000..e3cde07b --- /dev/null +++ b/rally-jobs/plugins/scenarios/kuryr.py @@ -0,0 +1,40 @@ +# Copyright 2016: IBM Inc. +# All Rights Reserved. +# +# 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 utils + +from rally.plugins.openstack import scenario +from rally.task import validation + + +class Kuryr(utils.KuryrScenario): + """Benchmark scenarios for Kuryr.""" + + @validation.required_openstack(users=True) + @scenario.configure(context={"cleanup": ["kuryr"]}) + def list_networks(self, network_list_args=None): + """List the networks. + + Measure the "docker network ls" command performance under kuryr. + + This will call the docker client API to list networks + + TODO (baohua): + 1. may support tenant/user in future. + 2. validation.required_services add KURYR support + + :param network_list_args: dict: names, ids + """ + self._list_networks(network_list_args or {}) diff --git a/rally-jobs/plugins/scenarios/utils.py b/rally-jobs/plugins/scenarios/utils.py new file mode 100644 index 00000000..9fc96a25 --- /dev/null +++ b/rally-jobs/plugins/scenarios/utils.py @@ -0,0 +1,41 @@ +# Copyright 2016: IBM Inc. +# All Rights Reserved. +# +# 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 docker + +from rally.common import logging +from rally.plugins.openstack import scenario +from rally.task import atomic + +LOG = logging.getLogger(__name__) + + +class KuryrScenario(scenario.OpenStackScenario): + """Base class for Kuryr scenarios with basic atomic actions.""" + + def __init__(self, context=None, admin_clients=None, clients=None): + super(KuryrScenario, self).__init__(context, admin_clients, clients) + self.docker_client = docker.Client(base_url='tcp://0.0.0.0:2375') + + @atomic.action_timer("kuryr.list_networks") + def _list_networks(self, network_list_args): + """Return user networks list. + + :param network_list_args: network list options + """ + LOG.debug("Running the list_networks scenario") + names = network_list_args.get('names') + ids = network_list_args.get('ids') + return self.docker_client.networks(names, ids) diff --git a/rally-jobs/tasks/scenarios/list_networks.json b/rally-jobs/tasks/scenarios/list_networks.json new file mode 100644 index 00000000..35060720 --- /dev/null +++ b/rally-jobs/tasks/scenarios/list_networks.json @@ -0,0 +1,28 @@ +{ + "Kuryr.list_networks": [ + { + "runner": { + "type": "constant", + "concurrency": 10, + "times": 100 + }, + "args": { + "network_list_args": {} + }, + "context": { + "users": { + "project_domain": "default", + "users_per_tenant": 3, + "tenants": 3, + "resource_management_workers": 10, + "user_domain": "default" + }, + "quotas": { + "neutron": { + "network": -1 + } + } + } + } + ] +} \ No newline at end of file