Merge "Add the kuryr plugin for rally"

This commit is contained in:
Jenkins 2016-02-18 19:34:09 +00:00 committed by Gerrit Code Review
commit 0ef6a35bc2
5 changed files with 112 additions and 3 deletions

View File

@ -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

View File

View File

@ -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 {})

View File

@ -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)

View File

@ -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
}
}
}
}
]
}