Add the kuryr plugin for rally

1. Following Rally plugin structure, create the kuryr plugin.
2. Add one scenario of listing the networks.
3. Add the task file to trigger the scenario. Currently, users
can try this task (with rally installed) by running:
rally --plugin-paths rally-jobs/plugins/ task start
rally-jobs/tasks/scenarios/list_networks.json
4. Merge gal's update on the gate task yaml.

implements blueprint: fullstack-testing

Change-Id: Ie68c4f4f70a81cfeafe2b13e2a896570576a6892
This commit is contained in:
Baohua Yang 2016-01-29 19:10:59 +08:00 committed by Baohua Yang
parent 79a47e4c86
commit cf2853a36d
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
}
}
}
}
]
}