From 0e5632546c3810e094e1de7206219ffd47ba4330 Mon Sep 17 00:00:00 2001 From: Liping Mao Date: Thu, 3 Nov 2016 10:49:00 +0800 Subject: [PATCH] Add Rally test to measure docker create/delete network with/without kuryr. Change-Id: If24a8307173cdfcbb1d67dd8c74f956a9ceef44c Partially-implements: bp kuryr-libnetwork-rally --- rally-jobs/kuryr-libnetwork.yaml | 27 ++++++++++++++---- rally-jobs/plugins/scenarios/kuryr.py | 23 ++++++++++++--- rally-jobs/plugins/scenarios/utils.py | 27 ++++++++++++++---- ...reate_and_delete_networks_with_kuryr.json} | 6 ++-- ...ate_and_delete_networks_without_kuryr.json | 28 +++++++++++++++++++ rally-jobs/tasks/scenarios/list_networks.json | 6 ++-- 6 files changed, 96 insertions(+), 21 deletions(-) rename rally-jobs/tasks/scenarios/{create_and_delete_networks.json => create_and_delete_networks_with_kuryr.json} (86%) create mode 100644 rally-jobs/tasks/scenarios/create_and_delete_networks_without_kuryr.json diff --git a/rally-jobs/kuryr-libnetwork.yaml b/rally-jobs/kuryr-libnetwork.yaml index a937a7e7..e8a64d14 100644 --- a/rally-jobs/kuryr-libnetwork.yaml +++ b/rally-jobs/kuryr-libnetwork.yaml @@ -3,8 +3,8 @@ - runner: type: "constant" - times: 40 - concurrency: 20 + times: 20 + concurrency: 1 context: users: tenants: 2 @@ -16,12 +16,29 @@ failure_rate: max: 0 - Kuryr.create_and_delete_networks: + Kuryr.create_and_delete_networks_with_kuryr: - runner: type: "constant" - times: 10 - concurrency: 4 + times: 20 + concurrency: 1 + context: + users: + tenants: 2 + users_per_tenant: 2 + quotas: + neutron: + network: -1 + sla: + failure_rate: + max: 0 + + Kuryr.create_and_delete_networks_without_kuryr: + - + runner: + type: "constant" + times: 20 + concurrency: 1 context: users: tenants: 2 diff --git a/rally-jobs/plugins/scenarios/kuryr.py b/rally-jobs/plugins/scenarios/kuryr.py index 630c7088..a6d38322 100644 --- a/rally-jobs/plugins/scenarios/kuryr.py +++ b/rally-jobs/plugins/scenarios/kuryr.py @@ -43,13 +43,28 @@ class Kuryr(utils.KuryrScenario): self._list_networks(network_list_args or {}) @scenario.configure(context={"cleanup": ["kuryr"]}) - def create_and_delete_networks(self, network_create_args=None): - """Create and delete a network. + def create_and_delete_networks_with_kuryr(self, network_create_args=None): + """Create and delete a network with kuryr. Measure the "docker network create" and "docker network rm" command - performance. + performance with kuryr driver. :param network_create_args: dict as options to create the network """ - network = self._create_network(network_create_args or {}) + network = self._create_network(is_kuryr=True, + network_create_args=network_create_args or {}) + self._delete_network(network) + + @scenario.configure(context={"cleanup": ["kuryr"]}) + def create_and_delete_networks_without_kuryr(self, + network_create_args=None): + """Create and delete a network without kuryr. + + Measure the "docker network create" and "docker network rm" command + performance with default driver. + + :param network_create_args: dict as options to create the network + """ + network = self._create_network(is_kuryr=False, + network_create_args=network_create_args or {}) self._delete_network(network) diff --git a/rally-jobs/plugins/scenarios/utils.py b/rally-jobs/plugins/scenarios/utils.py index 6a35415c..6ef482ca 100644 --- a/rally-jobs/plugins/scenarios/utils.py +++ b/rally-jobs/plugins/scenarios/utils.py @@ -41,17 +41,32 @@ class KuryrScenario(scenario.OpenStackScenario): return self.docker_client.networks(names, ids) @atomic.action_timer("kuryr.create_network") - def _create_network(self, network_create_args): - """Create Kuryr network. + def _create_network(self, is_kuryr=True, network_create_args=None): + """Create network with kuryr or without kuryr. :param network_create_args: dict: name, driver and others :returns: dict of the created network reference object """ name = self.generate_random_name() - return self.docker_client.create_network(name=name, - driver='kuryr', - options=network_create_args - ) + if is_kuryr: + ipam = { + "Driver": "kuryr", + "Options": {}, + "Config": [ + { + "Subnet": "20.0.0.0/24", + "IPRange": "20.0.0.0/24", + "Gateway": "20.0.0.1" + } + ] + } + return self.docker_client.create_network(name=name, + driver='kuryr', + ipam=ipam, + options=network_create_args) + else: + return self.docker_client.create_network(name=name, + options=network_create_args) @atomic.action_timer("kuryr.delete_network") def _delete_network(self, network): diff --git a/rally-jobs/tasks/scenarios/create_and_delete_networks.json b/rally-jobs/tasks/scenarios/create_and_delete_networks_with_kuryr.json similarity index 86% rename from rally-jobs/tasks/scenarios/create_and_delete_networks.json rename to rally-jobs/tasks/scenarios/create_and_delete_networks_with_kuryr.json index 2439d065..f72b3172 100644 --- a/rally-jobs/tasks/scenarios/create_and_delete_networks.json +++ b/rally-jobs/tasks/scenarios/create_and_delete_networks_with_kuryr.json @@ -1,10 +1,10 @@ { - "Kuryr.create_and_delete_networks": [ + "Kuryr.create_and_delete_networks_with_kuryr": [ { "runner": { "type": "constant", "concurrency": 2, - "times": 4 + "times": 20 }, "args": { "network_create_args": {} @@ -25,4 +25,4 @@ } } ] -} \ No newline at end of file +} diff --git a/rally-jobs/tasks/scenarios/create_and_delete_networks_without_kuryr.json b/rally-jobs/tasks/scenarios/create_and_delete_networks_without_kuryr.json new file mode 100644 index 00000000..317c9f0f --- /dev/null +++ b/rally-jobs/tasks/scenarios/create_and_delete_networks_without_kuryr.json @@ -0,0 +1,28 @@ +{ + "Kuryr.create_and_delete_networks_without_kuryr": [ + { + "runner": { + "type": "constant", + "concurrency": 2, + "times": 20 + }, + "args": { + "network_create_args": {} + }, + "context": { + "users": { + "project_domain": "default", + "users_per_tenant": 3, + "tenants": 3, + "resource_management_workers": 10, + "user_domain": "default" + }, + "quotas": { + "neutron": { + "network": -1 + } + } + } + } + ] +} diff --git a/rally-jobs/tasks/scenarios/list_networks.json b/rally-jobs/tasks/scenarios/list_networks.json index 35060720..e0454717 100644 --- a/rally-jobs/tasks/scenarios/list_networks.json +++ b/rally-jobs/tasks/scenarios/list_networks.json @@ -3,8 +3,8 @@ { "runner": { "type": "constant", - "concurrency": 10, - "times": 100 + "concurrency": 2, + "times": 20 }, "args": { "network_list_args": {} @@ -25,4 +25,4 @@ } } ] -} \ No newline at end of file +}