From d025cb8e68834ea60c727b3db21a63e2f97b6842 Mon Sep 17 00:00:00 2001 From: "Chris St. Pierre" <chris.a.st.pierre@gmail.com> Date: Fri, 16 Oct 2015 07:46:25 -0500 Subject: [PATCH] Implement new random name generator for keystone scenarios This switches keystone scenarios to using the new consistent random name generator. Implements blueprint: consistent-resource-names Change-Id: Ie753b6c6b570ce40bd17df545df4a2cde2c4bc50 --- rally-jobs/rally-mos.yaml | 19 ++--- rally-jobs/rally.yaml | 26 +++---- .../openstack/scenarios/keystone/basic.py | 64 ++++++----------- .../openstack/scenarios/keystone/utils.py | 40 +++++------ .../keystone/create-and-delete-user.json | 4 +- .../keystone/create-and-delete-user.yaml | 3 +- .../keystone/create-and-list-tenants.json | 4 +- .../keystone/create-and-list-tenants.yaml | 3 +- .../keystone/create-and-list-users.json | 4 +- .../keystone/create-and-list-users.yaml | 3 +- .../keystone/create-tenant-with-users.json | 1 - .../keystone/create-tenant-with-users.yaml | 1 - .../scenarios/keystone/create-tenant.json | 4 +- .../scenarios/keystone/create-tenant.yaml | 3 +- .../create-update-and-delete-tenant.json | 4 +- .../create-update-and-delete-tenant.yaml | 3 +- .../tasks/scenarios/keystone/create-user.json | 4 +- .../tasks/scenarios/keystone/create-user.yaml | 3 +- samples/tasks/sla/create-and-delete-user.json | 4 +- samples/tasks/sla/create-and-delete-user.yaml | 3 +- tests/functional/test_cli_task.py | 2 +- .../scenarios/keystone/test_basic.py | 65 +++++++---------- .../scenarios/keystone/test_utils.py | 70 ++++++++----------- 23 files changed, 119 insertions(+), 218 deletions(-) diff --git a/rally-jobs/rally-mos.yaml b/rally-jobs/rally-mos.yaml index f173e144..fb556093 100644 --- a/rally-jobs/rally-mos.yaml +++ b/rally-jobs/rally-mos.yaml @@ -2,8 +2,7 @@ KeystoneBasic.create_user: - - args: - name_length: 10 + args: {} runner: type: "constant" times: 1 @@ -14,8 +13,7 @@ KeystoneBasic.create_delete_user: - - args: - name_length: 10 + args: {} runner: type: "constant" times: 1 @@ -26,8 +24,7 @@ KeystoneBasic.create_and_list_tenants: - - args: - name_length: 10 + args: {} runner: type: "constant" times: 1 @@ -38,8 +35,7 @@ KeystoneBasic.create_and_list_users: - - args: - name_length: 10 + args: {} runner: type: "constant" times: 1 @@ -50,8 +46,7 @@ KeystoneBasic.create_tenant: - - args: - name_length: 10 + args: {} runner: type: "constant" times: 1 @@ -63,7 +58,6 @@ KeystoneBasic.create_tenant_with_users: - args: - name_length: 10 users_per_tenant: 10 runner: type: "constant" @@ -78,8 +72,7 @@ KeystoneBasic.create_delete_user: - - args: - name_length: 10 + args: {} runner: type: "constant" times: 1 diff --git a/rally-jobs/rally.yaml b/rally-jobs/rally.yaml index 24168af5..3e5b7ddd 100644 --- a/rally-jobs/rally.yaml +++ b/rally-jobs/rally.yaml @@ -1,8 +1,7 @@ --- KeystoneBasic.create_user: - - args: - name_length: 10 + args: {} runner: type: "constant" times: 10 @@ -13,8 +12,7 @@ KeystoneBasic.create_delete_user: - - args: - name_length: 10 + args: {} runner: type: "constant" times: 10 @@ -47,8 +45,7 @@ KeystoneBasic.create_and_list_tenants: - - args: - name_length: 10 + args: {} runner: type: "constant" times: 10 @@ -127,8 +124,7 @@ KeystoneBasic.create_and_list_users: - - args: - name_length: 10 + args: {} runner: type: "constant" times: 10 @@ -139,8 +135,7 @@ KeystoneBasic.create_tenant: - - args: - name_length: 10 + args: {} runner: type: "constant" times: 10 @@ -152,7 +147,6 @@ KeystoneBasic.create_tenant_with_users: - args: - name_length: 10 users_per_tenant: 10 runner: type: "constant" @@ -167,9 +161,7 @@ KeystoneBasic.create_user_update_password: - - args: - name_length: 10 - password_length: 10 + args: {} runner: type: "constant" times: 10 @@ -180,8 +172,7 @@ KeystoneBasic.create_update_and_delete_tenant: - - args: - name_length: 10 + args: {} runner: type: "constant" times: 10 @@ -192,8 +183,7 @@ KeystoneBasic.create_delete_user: - - args: - name_length: 10 + args: {} runner: type: "constant" times: 10 diff --git a/rally/plugins/openstack/scenarios/keystone/basic.py b/rally/plugins/openstack/scenarios/keystone/basic.py index 38c37f37..074c0807 100644 --- a/rally/plugins/openstack/scenarios/keystone/basic.py +++ b/rally/plugins/openstack/scenarios/keystone/basic.py @@ -22,29 +22,25 @@ from rally.task import validation class KeystoneBasic(kutils.KeystoneScenario): """Basic benchmark scenarios for Keystone.""" - @validation.number("name_length", minval=10) @validation.required_openstack(admin=True) @scenario.configure(context={"admin_cleanup": ["keystone"]}) - def create_user(self, name_length=10, **kwargs): + def create_user(self, **kwargs): """Create a keystone user with random name. - :param name_length: length of the random part of user name :param kwargs: Other optional parameters to create users like "tenant_id", "enabled". """ - self._user_create(name_length=name_length, **kwargs) + self._user_create(**kwargs) - @validation.number("name_length", minval=10) @validation.required_openstack(admin=True) @scenario.configure(context={"admin_cleanup": ["keystone"]}) - def create_delete_user(self, name_length=10, **kwargs): + def create_delete_user(self, **kwargs): """Create a keystone user with random name and then delete it. - :param name_length: length of the random part of user name :param kwargs: Other optional parameters to create users like "tenant_id", "enabled". """ - user = self._user_create(name_length=name_length, **kwargs) + user = self._user_create(**kwargs) self._resource_delete(user) @validation.required_openstack(admin=True) @@ -61,57 +57,47 @@ class KeystoneBasic(kutils.KeystoneScenario): self._update_user_enabled(user, not enabled) self._resource_delete(user) - @validation.number("name_length", minval=10) @validation.required_openstack(admin=True) @scenario.configure(context={"admin_cleanup": ["keystone"]}) - def create_tenant(self, name_length=10, **kwargs): + def create_tenant(self, **kwargs): """Create a keystone tenant with random name. - :param name_length: length of the random part of tenant name :param kwargs: Other optional parameters """ - self._tenant_create(name_length=name_length, **kwargs) + self._tenant_create(**kwargs) - @validation.number("name_length", minval=10) @validation.number("users_per_tenant", minval=1) @validation.required_openstack(admin=True) @scenario.configure(context={"admin_cleanup": ["keystone"]}) - def create_tenant_with_users(self, users_per_tenant, name_length=10, - **kwargs): + def create_tenant_with_users(self, users_per_tenant, **kwargs): """Create a keystone tenant and several users belonging to it. - :param name_length: length of the random part of tenant/user name :param users_per_tenant: number of users to create for the tenant :param kwargs: Other optional parameters for tenant creation :returns: keystone tenant instance """ - tenant = self._tenant_create(name_length=name_length, **kwargs) - self._users_create(tenant, users_per_tenant=users_per_tenant, - name_length=name_length) + tenant = self._tenant_create(**kwargs) + self._users_create(tenant, users_per_tenant=users_per_tenant) - @validation.number("name_length", minval=10) @validation.required_openstack(admin=True) @scenario.configure(context={"admin_cleanup": ["keystone"]}) - def create_and_list_users(self, name_length=10, **kwargs): + def create_and_list_users(self, **kwargs): """Create a keystone user with random name and list all users. - :param name_length: length of the random part of user name :param kwargs: Other optional parameters to create users like "tenant_id", "enabled". """ - self._user_create(name_length=name_length, **kwargs) + self._user_create(**kwargs) self._list_users() - @validation.number("name_length", minval=10) @validation.required_openstack(admin=True) @scenario.configure(context={"admin_cleanup": ["keystone"]}) - def create_and_list_tenants(self, name_length=10, **kwargs): + def create_and_list_tenants(self, **kwargs): """Create a keystone tenant with random name and list all tenants. - :param name_length: length of the random part of tenant name :param kwargs: Other optional parameters """ - self._tenant_create(name_length=name_length, **kwargs) + self._tenant_create(**kwargs) self._list_tenants() @validation.required_openstack(admin=True, users=True) @@ -157,8 +143,8 @@ class KeystoneBasic(kutils.KeystoneScenario): None, to create an ephemeral service and get it by ID. """ - tenant = self._tenant_create(name_length=5) - user = self._user_create(name_length=10) + tenant = self._tenant_create() + user = self._user_create() role = self._role_create() self._get_tenant(tenant.id) self._get_user(user.id) @@ -184,31 +170,23 @@ class KeystoneBasic(kutils.KeystoneScenario): service = self._service_create(service_type, description) self._delete_service(service.id) - @validation.number("name_length", minval=10) @validation.required_openstack(admin=True) @scenario.configure(context={"admin_cleanup": ["keystone"]}) - def create_update_and_delete_tenant(self, name_length=10, **kwargs): + def create_update_and_delete_tenant(self, **kwargs): """Create, update and delete tenant. - :param name_length: length of the random part of tenant name :param kwargs: Other optional parameters for tenant creation """ - tenant = self._tenant_create(name_length=name_length, **kwargs) + tenant = self._tenant_create(**kwargs) self._update_tenant(tenant) self._resource_delete(tenant) - @validation.number("password_length", minval=10) - @validation.number("name_length", minval=10) @validation.required_openstack(admin=True) @scenario.configure(context={"admin_cleanup": ["keystone"]}) - def create_user_update_password(self, name_length=10, password_length=10): - """Create user and update password for that user. - - :param name_length: length of the user name - :param password_length: length of the password - """ - password = self._generate_random_name(length=password_length) - user = self._user_create(name_length=name_length) + def create_user_update_password(self): + """Create user and update password for that user.""" + password = self.generate_random_name() + user = self._user_create() self._update_user_password(user.id, password) @validation.required_openstack(admin=True) diff --git a/rally/plugins/openstack/scenarios/keystone/utils.py b/rally/plugins/openstack/scenarios/keystone/utils.py index 94741b00..816345a6 100644 --- a/rally/plugins/openstack/scenarios/keystone/utils.py +++ b/rally/plugins/openstack/scenarios/keystone/utils.py @@ -15,29 +15,27 @@ import uuid +from rally.common import utils from rally.plugins.openstack import scenario from rally.task import atomic def is_temporary(resource): - return resource.name.startswith(KeystoneScenario.RESOURCE_NAME_PREFIX) + return utils.name_matches_object(resource.name, KeystoneScenario) class KeystoneScenario(scenario.OpenStackScenario): """Base class for Keystone scenarios with basic atomic actions.""" - RESOURCE_NAME_PREFIX = "rally_keystone_" - @atomic.action_timer("keystone.create_user") - def _user_create(self, name_length=10, email=None, **kwargs): + def _user_create(self, email=None, **kwargs): """Creates keystone user with random name. - :param name_length: length of generated (random) part of name :param kwargs: Other optional parameters to create users like "tenant_id", "enabled". :returns: keystone user instance """ - name = self._generate_random_name(length=name_length) + name = self.generate_random_name() # NOTE(boris-42): password and email parameters are required by # keystone client v2.0. This should be cleanuped # when we switch to v3. @@ -63,14 +61,13 @@ class KeystoneScenario(scenario.OpenStackScenario): resource.delete() @atomic.action_timer("keystone.create_tenant") - def _tenant_create(self, name_length=10, **kwargs): + def _tenant_create(self, **kwargs): """Creates keystone tenant with random name. - :param name_length: length of generated (random) part of name :param kwargs: Other optional parameters :returns: keystone tenant instance """ - name = self._generate_random_name(length=name_length) + name = self.generate_random_name() return self.admin_clients("keystone").tenants.create(name, **kwargs) @atomic.action_timer("keystone.create_service") @@ -78,41 +75,37 @@ class KeystoneScenario(scenario.OpenStackScenario): description=None): """Creates keystone service with random name. - :param name: name of the service :param service_type: type of the service :param description: description of the service :returns: keystone service instance """ - description = description or self._generate_random_name( - prefix="rally_test_service_description_") + description = description or self.generate_random_name() return self.admin_clients("keystone").services.create( - self._generate_random_name(), + self.generate_random_name(), service_type, description) @atomic.action_timer("keystone.create_users") - def _users_create(self, tenant, users_per_tenant, name_length=10): + def _users_create(self, tenant, users_per_tenant): """Adds users to a tenant. :param tenant: tenant object :param users_per_tenant: number of users in per tenant - :param name_length: length of generated (random) part of name for user """ for i in range(users_per_tenant): - name = self._generate_random_name(length=name_length) + name = self.generate_random_name() password = name - email = (name + "@rally.me") + email = name + "@rally.me" self.admin_clients("keystone").users.create( name, password=password, email=email, tenant_id=tenant.id) @atomic.action_timer("keystone.create_role") - def _role_create(self, name_length=5): + def _role_create(self): """Creates keystone user role with random name. - :param name_length: length of generated (random) part of role name :returns: keystone user role instance """ role = self.admin_clients("keystone").roles.create( - self._generate_random_name(length=name_length)) + self.generate_random_name()) return role @atomic.action_timer("keystone.list_users") @@ -207,15 +200,14 @@ class KeystoneScenario(scenario.OpenStackScenario): self.admin_clients("keystone").services.delete(service_id) @atomic.action_timer("keystone.update_tenant") - def _update_tenant(self, tenant, name=None, description=None): + def _update_tenant(self, tenant, description=None): """Update tenant name and description. :param tenant: tenant to be updated - :param name: tenant name to be set :param description: tenant description to be set """ - name = name or (tenant.name + "_updated") - description = description or (tenant.name + "_description_updated") + name = self.generate_random_name() + description = description or self.generate_random_name() self.admin_clients("keystone").tenants.update(tenant.id, name, description) diff --git a/samples/tasks/scenarios/keystone/create-and-delete-user.json b/samples/tasks/scenarios/keystone/create-and-delete-user.json index df19d5d7..c21b7327 100644 --- a/samples/tasks/scenarios/keystone/create-and-delete-user.json +++ b/samples/tasks/scenarios/keystone/create-and-delete-user.json @@ -1,9 +1,7 @@ { "KeystoneBasic.create_delete_user": [ { - "args": { - "name_length": 10 - }, + "args": {}, "runner": { "type": "constant", "times": 100, diff --git a/samples/tasks/scenarios/keystone/create-and-delete-user.yaml b/samples/tasks/scenarios/keystone/create-and-delete-user.yaml index 1b69dfc8..c518fc09 100644 --- a/samples/tasks/scenarios/keystone/create-and-delete-user.yaml +++ b/samples/tasks/scenarios/keystone/create-and-delete-user.yaml @@ -1,8 +1,7 @@ --- KeystoneBasic.create_delete_user: - - args: - name_length: 10 + args: {} runner: type: "constant" times: 100 diff --git a/samples/tasks/scenarios/keystone/create-and-list-tenants.json b/samples/tasks/scenarios/keystone/create-and-list-tenants.json index 6cb8bae7..b23fb49a 100644 --- a/samples/tasks/scenarios/keystone/create-and-list-tenants.json +++ b/samples/tasks/scenarios/keystone/create-and-list-tenants.json @@ -1,9 +1,7 @@ { "KeystoneBasic.create_and_list_tenants": [ { - "args": { - "name_length": 10 - }, + "args": {}, "runner": { "type": "constant", "times": 10, diff --git a/samples/tasks/scenarios/keystone/create-and-list-tenants.yaml b/samples/tasks/scenarios/keystone/create-and-list-tenants.yaml index f1279465..d18c9eb9 100644 --- a/samples/tasks/scenarios/keystone/create-and-list-tenants.yaml +++ b/samples/tasks/scenarios/keystone/create-and-list-tenants.yaml @@ -1,8 +1,7 @@ --- KeystoneBasic.create_and_list_tenants: - - args: - name_length: 10 + args: {} runner: type: "constant" times: 10 diff --git a/samples/tasks/scenarios/keystone/create-and-list-users.json b/samples/tasks/scenarios/keystone/create-and-list-users.json index e88e79e1..ed7532c9 100644 --- a/samples/tasks/scenarios/keystone/create-and-list-users.json +++ b/samples/tasks/scenarios/keystone/create-and-list-users.json @@ -1,9 +1,7 @@ { "KeystoneBasic.create_and_list_users": [ { - "args": { - "name_length": 10 - }, + "args": {}, "runner": { "type": "constant", "times": 100, diff --git a/samples/tasks/scenarios/keystone/create-and-list-users.yaml b/samples/tasks/scenarios/keystone/create-and-list-users.yaml index 944a9f23..6bfd8791 100644 --- a/samples/tasks/scenarios/keystone/create-and-list-users.yaml +++ b/samples/tasks/scenarios/keystone/create-and-list-users.yaml @@ -1,8 +1,7 @@ --- KeystoneBasic.create_and_list_users: - - args: - name_length: 10 + args: {} runner: type: "constant" times: 100 diff --git a/samples/tasks/scenarios/keystone/create-tenant-with-users.json b/samples/tasks/scenarios/keystone/create-tenant-with-users.json index 59fdbffe..2f63c29a 100644 --- a/samples/tasks/scenarios/keystone/create-tenant-with-users.json +++ b/samples/tasks/scenarios/keystone/create-tenant-with-users.json @@ -2,7 +2,6 @@ "KeystoneBasic.create_tenant_with_users": [ { "args": { - "name_length": 10, "users_per_tenant": 10 }, "runner": { diff --git a/samples/tasks/scenarios/keystone/create-tenant-with-users.yaml b/samples/tasks/scenarios/keystone/create-tenant-with-users.yaml index 5ee52493..402e7fd3 100644 --- a/samples/tasks/scenarios/keystone/create-tenant-with-users.yaml +++ b/samples/tasks/scenarios/keystone/create-tenant-with-users.yaml @@ -2,7 +2,6 @@ KeystoneBasic.create_tenant_with_users: - args: - name_length: 10 users_per_tenant: 10 runner: type: "constant" diff --git a/samples/tasks/scenarios/keystone/create-tenant.json b/samples/tasks/scenarios/keystone/create-tenant.json index 603c1dcd..dc3690e1 100644 --- a/samples/tasks/scenarios/keystone/create-tenant.json +++ b/samples/tasks/scenarios/keystone/create-tenant.json @@ -1,9 +1,7 @@ { "KeystoneBasic.create_tenant": [ { - "args": { - "name_length": 10 - }, + "args": {}, "runner": { "type": "constant", "times": 100, diff --git a/samples/tasks/scenarios/keystone/create-tenant.yaml b/samples/tasks/scenarios/keystone/create-tenant.yaml index af52a575..bd60e8a1 100644 --- a/samples/tasks/scenarios/keystone/create-tenant.yaml +++ b/samples/tasks/scenarios/keystone/create-tenant.yaml @@ -1,8 +1,7 @@ --- KeystoneBasic.create_tenant: - - args: - name_length: 10 + args: {} runner: type: "constant" times: 100 diff --git a/samples/tasks/scenarios/keystone/create-update-and-delete-tenant.json b/samples/tasks/scenarios/keystone/create-update-and-delete-tenant.json index a2b36f28..9562faaa 100644 --- a/samples/tasks/scenarios/keystone/create-update-and-delete-tenant.json +++ b/samples/tasks/scenarios/keystone/create-update-and-delete-tenant.json @@ -1,9 +1,7 @@ { "KeystoneBasic.create_update_and_delete_tenant": [ { - "args": { - "name_length": 10 - }, + "args": {}, "runner": { "type": "constant", "times": 100, diff --git a/samples/tasks/scenarios/keystone/create-update-and-delete-tenant.yaml b/samples/tasks/scenarios/keystone/create-update-and-delete-tenant.yaml index 2cb33c83..bac1f44c 100644 --- a/samples/tasks/scenarios/keystone/create-update-and-delete-tenant.yaml +++ b/samples/tasks/scenarios/keystone/create-update-and-delete-tenant.yaml @@ -1,8 +1,7 @@ --- KeystoneBasic.create_update_and_delete_tenant: - - args: - name_length: 10 + args: {} runner: type: "constant" times: 100 diff --git a/samples/tasks/scenarios/keystone/create-user.json b/samples/tasks/scenarios/keystone/create-user.json index b90642dd..8aa6bca2 100644 --- a/samples/tasks/scenarios/keystone/create-user.json +++ b/samples/tasks/scenarios/keystone/create-user.json @@ -1,9 +1,7 @@ { "KeystoneBasic.create_user": [ { - "args": { - "name_length": 10 - }, + "args": {}, "runner": { "type": "constant", "times": 100, diff --git a/samples/tasks/scenarios/keystone/create-user.yaml b/samples/tasks/scenarios/keystone/create-user.yaml index 5e9f2dee..9ed26a24 100644 --- a/samples/tasks/scenarios/keystone/create-user.yaml +++ b/samples/tasks/scenarios/keystone/create-user.yaml @@ -1,8 +1,7 @@ --- KeystoneBasic.create_user: - - args: - name_length: 10 + args: {} runner: type: "constant" times: 100 diff --git a/samples/tasks/sla/create-and-delete-user.json b/samples/tasks/sla/create-and-delete-user.json index 38d42755..534a097d 100644 --- a/samples/tasks/sla/create-and-delete-user.json +++ b/samples/tasks/sla/create-and-delete-user.json @@ -1,9 +1,7 @@ { "KeystoneBasic.create_delete_user": [ { - "args": { - "name_length": 10 - }, + "args": {}, "runner": { "type": "constant", "times": 100, diff --git a/samples/tasks/sla/create-and-delete-user.yaml b/samples/tasks/sla/create-and-delete-user.yaml index 4d32ece4..e15bd8fb 100644 --- a/samples/tasks/sla/create-and-delete-user.yaml +++ b/samples/tasks/sla/create-and-delete-user.yaml @@ -1,8 +1,7 @@ --- KeystoneBasic.create_delete_user: - - args: - name_length: 10 + args: {} runner: type: "constant" times: 100 diff --git a/tests/functional/test_cli_task.py b/tests/functional/test_cli_task.py index c8766c2b..574b2fe7 100644 --- a/tests/functional/test_cli_task.py +++ b/tests/functional/test_cli_task.py @@ -722,7 +722,7 @@ class SLATestCase(unittest.TestCase): "KeystoneBasic.create_and_list_users": [ { "args": { - "name_length": 10 + "enabled": True }, "runner": { "type": "constant", diff --git a/tests/unit/plugins/openstack/scenarios/keystone/test_basic.py b/tests/unit/plugins/openstack/scenarios/keystone/test_basic.py index 32d353ae..b05fcabe 100644 --- a/tests/unit/plugins/openstack/scenarios/keystone/test_basic.py +++ b/tests/unit/plugins/openstack/scenarios/keystone/test_basic.py @@ -36,27 +36,23 @@ class KeystoneBasicTestCase(test.ScenarioTestCase): }) return context - @mock.patch("rally.common.utils.generate_random_name") - def test_create_user(self, mock_generate_random_name): + def test_create_user(self): scenario = basic.KeystoneBasic(self.context) scenario._user_create = mock.MagicMock() - scenario.create_user(name_length=20, password="tttt", tenant_id="id") - scenario._user_create.assert_called_once_with(name_length=20, - password="tttt", + scenario.create_user(password="tttt", tenant_id="id") + scenario._user_create.assert_called_once_with(password="tttt", tenant_id="id") - @mock.patch("rally.common.utils.generate_random_name") - def test_create_delete_user(self, mock_generate_random_name): + def test_create_delete_user(self): create_result = mock.MagicMock() scenario = basic.KeystoneBasic(self.context) scenario._user_create = mock.MagicMock(return_value=create_result) scenario._resource_delete = mock.MagicMock() - scenario.create_delete_user(name_length=30, email="abcd", enabled=True) + scenario.create_delete_user(email="abcd", enabled=True) - scenario._user_create.assert_called_once_with(name_length=30, - email="abcd", + scenario._user_create.assert_called_once_with(email="abcd", enabled=True) scenario._resource_delete.assert_called_once_with(create_result) @@ -75,48 +71,37 @@ class KeystoneBasicTestCase(test.ScenarioTestCase): scenario._resource_delete.assert_called_once_with( scenario._user_create.return_value) - @mock.patch("rally.common.utils.generate_random_name") - def test_create_tenant(self, mock_generate_random_name): + def test_create_tenant(self): scenario = basic.KeystoneBasic(self.context) scenario._tenant_create = mock.MagicMock() - scenario.create_tenant(name_length=20, enabled=True) - scenario._tenant_create.assert_called_once_with(name_length=20, - enabled=True) + scenario.create_tenant(enabled=True) + scenario._tenant_create.assert_called_once_with(enabled=True) - @mock.patch("rally.common.utils.generate_random_name") - def test_create_tenant_with_users(self, mock_generate_random_name): + def test_create_tenant_with_users(self): scenario = basic.KeystoneBasic(self.context) fake_tenant = mock.MagicMock() scenario._tenant_create = mock.MagicMock(return_value=fake_tenant) scenario._users_create = mock.MagicMock() - scenario.create_tenant_with_users(users_per_tenant=1, name_length=20, - enabled=True) - scenario._tenant_create.assert_called_once_with(name_length=20, - enabled=True) + scenario.create_tenant_with_users(users_per_tenant=1, enabled=True) + scenario._tenant_create.assert_called_once_with(enabled=True) scenario._users_create.assert_called_once_with(fake_tenant, - users_per_tenant=1, - name_length=20) + users_per_tenant=1) - @mock.patch("rally.common.utils.generate_random_name") - def test_create_and_list_users(self, mock_generate_random_name): + def test_create_and_list_users(self): scenario = basic.KeystoneBasic(self.context) scenario._user_create = mock.MagicMock() scenario._list_users = mock.MagicMock() - scenario.create_and_list_users(name_length=20, password="tttt", - tenant_id="id") - scenario._user_create.assert_called_once_with(name_length=20, - password="tttt", + scenario.create_and_list_users(password="tttt", tenant_id="id") + scenario._user_create.assert_called_once_with(password="tttt", tenant_id="id") scenario._list_users.assert_called_once_with() - @mock.patch("rally.common.utils.generate_random_name") - def test_create_and_list_tenants(self, mock_generate_random_name): + def test_create_and_list_tenants(self): scenario = basic.KeystoneBasic(self.context) scenario._tenant_create = mock.MagicMock() scenario._list_tenants = mock.MagicMock() - scenario.create_and_list_tenants(name_length=20, enabled=True) - scenario._tenant_create.assert_called_once_with(name_length=20, - enabled=True) + scenario.create_and_list_tenants(enabled=True) + scenario._tenant_create.assert_called_once_with(enabled=True) scenario._list_tenants.assert_called_with() def test_assign_and_remove_user_role(self): @@ -187,8 +172,8 @@ class KeystoneBasicTestCase(test.ScenarioTestCase): scenario.get_entities(service_name) - scenario._tenant_create.assert_called_once_with(name_length=5) - scenario._user_create.assert_called_once_with(name_length=10) + scenario._tenant_create.assert_called_once_with() + scenario._user_create.assert_called_once_with() scenario._role_create.assert_called_once_with() scenario._get_tenant.assert_called_once_with(fake_tenant.id) @@ -240,13 +225,13 @@ class KeystoneBasicTestCase(test.ScenarioTestCase): fake_password = "pswd" fake_user = mock.MagicMock() scenario._user_create = mock.MagicMock(return_value=fake_user) - scenario._generate_random_name = mock.MagicMock( + scenario.generate_random_name = mock.MagicMock( return_value=fake_password) scenario._update_user_password = mock.MagicMock() - scenario.create_user_update_password(name_length=9, password_length=9) - scenario._generate_random_name.assert_called_once_with(length=9) - scenario._user_create.assert_called_once_with(name_length=9) + scenario.create_user_update_password() + scenario.generate_random_name.assert_called_once_with() + scenario._user_create.assert_called_once_with() scenario._update_user_password.assert_called_once_with(fake_user.id, fake_password) diff --git a/tests/unit/plugins/openstack/scenarios/keystone/test_utils.py b/tests/unit/plugins/openstack/scenarios/keystone/test_utils.py index 8f728aa0..069e4692 100644 --- a/tests/unit/plugins/openstack/scenarios/keystone/test_utils.py +++ b/tests/unit/plugins/openstack/scenarios/keystone/test_utils.py @@ -14,7 +14,6 @@ # under the License. import mock -import six from rally.plugins.openstack.scenarios.keystone import utils from tests.unit import fakes @@ -25,33 +24,21 @@ UTILS = "rally.plugins.openstack.scenarios.keystone.utils." class KeystoneUtilsTestCase(test.TestCase): - def test_RESOURCE_NAME_PREFIX(self): - self.assertIsInstance(utils.KeystoneScenario.RESOURCE_NAME_PREFIX, - six.string_types) - # Prefix must be long enough to guarantee that resource - # to be recognized as created by rally - self.assertTrue( - len(utils.KeystoneScenario.RESOURCE_NAME_PREFIX) > 7) - - def test_is_temporary(self): - prefix = utils.KeystoneScenario.RESOURCE_NAME_PREFIX - tests = [ - (fakes.FakeResource(name=prefix + "abc"), True), - (fakes.FakeResource(name="another"), False), - (fakes.FakeResource(name=prefix[:-3] + "abc"), False) - ] - - for resource, is_valid in tests: - self.assertEqual(utils.is_temporary(resource), is_valid) + @mock.patch("rally.common.utils.name_matches_object") + def test_is_temporary(self, mock_name_matches_object): + resource = mock.Mock() + self.assertEqual(utils.is_temporary(resource), + mock_name_matches_object.return_value) + mock_name_matches_object.assert_called_once_with( + resource.name, utils.KeystoneScenario) class KeystoneScenarioTestCase(test.ScenarioTestCase): - @mock.patch(UTILS + "uuid.uuid4", return_value="pwd") - @mock.patch("rally.common.utils.generate_random_name", - return_value="foobarov") - def test_user_create(self, mock_generate_random_name, mock_uuid4): + @mock.patch("uuid.uuid4", return_value="pwd") + def test_user_create(self, mock_uuid4): scenario = utils.KeystoneScenario(self.context) + scenario.generate_random_name = mock.Mock(return_value="foobarov") result = scenario._user_create() self.assertEqual( @@ -77,15 +64,15 @@ class KeystoneScenarioTestCase(test.ScenarioTestCase): self._test_atomic_action_timer(scenario.atomic_actions(), "keystone.update_user_enabled") - @mock.patch("rally.common.utils.generate_random_name") - def test_role_create(self, mock_generate_random_name): + def test_role_create(self): scenario = utils.KeystoneScenario(self.context) + scenario.generate_random_name = mock.Mock() result = scenario._role_create() self.assertEqual( self.admin_clients("keystone").roles.create.return_value, result) self.admin_clients("keystone").roles.create.assert_called_once_with( - mock_generate_random_name.return_value) + scenario.generate_random_name.return_value) self._test_atomic_action_timer(scenario.atomic_actions(), "keystone.create_role") @@ -142,24 +129,23 @@ class KeystoneScenarioTestCase(test.ScenarioTestCase): self._test_atomic_action_timer(scenario.atomic_actions(), "keystone.remove_role") - @mock.patch("rally.common.utils.generate_random_name") - def test_tenant_create(self, mock_generate_random_name): + def test_tenant_create(self): scenario = utils.KeystoneScenario(self.context) + scenario.generate_random_name = mock.Mock() result = scenario._tenant_create() self.assertEqual( self.admin_clients("keystone").tenants.create.return_value, result) self.admin_clients("keystone").tenants.create.assert_called_once_with( - mock_generate_random_name.return_value) + scenario.generate_random_name.return_value) self._test_atomic_action_timer(scenario.atomic_actions(), "keystone.create_tenant") def test_service_create(self): service_type = "service_type" - description = "_description" - + description = "description" scenario = utils.KeystoneScenario(self.context) - scenario._generate_random_name = mock.Mock() + scenario.generate_random_name = mock.Mock() result = scenario._service_create(service_type=service_type, description=description) @@ -168,18 +154,17 @@ class KeystoneScenarioTestCase(test.ScenarioTestCase): self.admin_clients("keystone").services.create.return_value, result) self.admin_clients("keystone").services.create.assert_called_once_with( - scenario._generate_random_name.return_value, + scenario.generate_random_name.return_value, service_type, description) self._test_atomic_action_timer(scenario.atomic_actions(), "keystone.create_service") - @mock.patch("rally.common.utils.generate_random_name", - return_value="foobarov") - def test_tenant_create_with_users(self, mock_generate_random_name): + def test_tenant_create_with_users(self): tenant = mock.MagicMock() scenario = utils.KeystoneScenario(self.context) + scenario.generate_random_name = mock.Mock(return_value="foobarov") - scenario._users_create(tenant, users_per_tenant=1, name_length=10) + scenario._users_create(tenant, users_per_tenant=1) self.admin_clients("keystone").users.create.assert_called_once_with( "foobarov", password="foobarov", email="foobarov@rally.me", @@ -261,14 +246,15 @@ class KeystoneScenarioTestCase(test.ScenarioTestCase): def test_update_tenant(self): tenant = mock.MagicMock() - description = tenant.name + "_description_updated_test" - name = tenant.name + "test_updated_test" + description = "new description" + scenario = utils.KeystoneScenario(self.context) - scenario._update_tenant(tenant=tenant, name=name, - description=description) + scenario.generate_random_name = mock.Mock() + scenario._update_tenant(tenant=tenant, description=description) self.admin_clients("keystone").tenants.update.assert_called_once_with( - tenant.id, name, description) + tenant.id, scenario.generate_random_name.return_value, + description) self._test_atomic_action_timer(scenario.atomic_actions(), "keystone.update_tenant")