diff --git a/rally-jobs/kuryr.yaml b/rally-jobs/kuryr.yaml index 5441e8cf..a937a7e7 100644 --- a/rally-jobs/kuryr.yaml +++ b/rally-jobs/kuryr.yaml @@ -15,3 +15,20 @@ sla: failure_rate: max: 0 + + Kuryr.create_and_delete_networks: + - + runner: + type: "constant" + times: 10 + concurrency: 4 + context: + users: + tenants: 2 + users_per_tenant: 2 + quotas: + neutron: + network: -1 + sla: + failure_rate: + max: 0 diff --git a/rally-jobs/plugins/scenarios/kuryr.py b/rally-jobs/plugins/scenarios/kuryr.py index e3cde07b..d6e9f48a 100644 --- a/rally-jobs/plugins/scenarios/kuryr.py +++ b/rally-jobs/plugins/scenarios/kuryr.py @@ -38,3 +38,15 @@ class Kuryr(utils.KuryrScenario): :param network_list_args: dict: names, ids """ 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. + + Measure the "docker network create" and "docker network rm" command + performance. + + :param network_create_args: dict as options to create the network + """ + network = self._create_network(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 9fc96a25..6a35415c 100644 --- a/rally-jobs/plugins/scenarios/utils.py +++ b/rally-jobs/plugins/scenarios/utils.py @@ -39,3 +39,24 @@ class KuryrScenario(scenario.OpenStackScenario): names = network_list_args.get('names') ids = network_list_args.get('ids') return self.docker_client.networks(names, ids) + + @atomic.action_timer("kuryr.create_network") + def _create_network(self, network_create_args): + """Create Kuryr network. + + :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 + ) + + @atomic.action_timer("kuryr.delete_network") + def _delete_network(self, network): + """Delete Kuryr network. + + :param network: Network object + """ + self.docker_client.remove_network(network['Id']) diff --git a/rally-jobs/tasks/scenarios/create_and_delete_networks.json b/rally-jobs/tasks/scenarios/create_and_delete_networks.json new file mode 100644 index 00000000..2439d065 --- /dev/null +++ b/rally-jobs/tasks/scenarios/create_and_delete_networks.json @@ -0,0 +1,28 @@ +{ + "Kuryr.create_and_delete_networks": [ + { + "runner": { + "type": "constant", + "concurrency": 2, + "times": 4 + }, + "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 + } + } + } + } + ] +} \ No newline at end of file