Merge "Add tenants create, with users per tenant benchmark for keystone"

This commit is contained in:
Jenkins 2014-04-03 11:09:48 +00:00 committed by Gerrit Code Review
commit 0800a91553
6 changed files with 82 additions and 1 deletions

View File

@ -0,0 +1,15 @@
{
"KeystoneBasic.create_tenant_with_users": [
{
"args": {
"name_length": 10,
"users_per_tenant": 10
},
"runner":{
"type": "continuous",
"times": 10,
"active_users": 10
}
}
]
}

View File

@ -0,0 +1,10 @@
---
KeystoneBasic.create_tenant_with_users:
-
args:
name_length: 10
users_per_tenant: 10
runner:
type: "continuous"
times: 10
active_users: 10

View File

@ -34,3 +34,11 @@ class KeystoneBasic(kutils.KeystoneScenario):
@context_cleaner.cleanup([])
def create_tenant(self, name_length=10, **kwargs):
self._tenant_create(name_length=name_length, **kwargs)
@base.scenario
@context_cleaner.cleanup([])
def create_tenant_with_users(self, name_length=10,
users_per_tenant=10, **kwargs):
tenant = self._tenant_create(name_length=name_length, **kwargs)
self._users_create(tenant, name_length=name_length,
users_per_tenant=users_per_tenant, **kwargs)

View File

@ -72,3 +72,17 @@ class KeystoneScenario(base.Scenario):
"""
name = generate_keystone_name(length=name_length)
return self.admin_clients("keystone").tenants.create(name, **kwargs)
@scenario_utils.atomic_action_timer('keystone.create_users')
def _users_create(self, tenant, name_length=10, users_per_tenant=10):
"""Adds users to a tenant.
:param name_length: length of generated (random) part of name for user
:param users_per_tenant: number of users in per tenant
"""
for i in range(users_per_tenant):
name = generate_keystone_name(length=name_length)
password = name
email = (name + "@rally.me")
self.admin_clients("keystone").users.create(name, password, email,
tenant_id=tenant.id)

View File

@ -18,7 +18,6 @@ import mock
from rally.benchmark.scenarios.keystone import basic
from tests import test
KEYSTONE_BASE = "rally.benchmark.scenarios.keystone."
KEYSTONE_BASIC = KEYSTONE_BASE + "basic.KeystoneBasic."
KEYSTONE_UTILS = KEYSTONE_BASE + "utils."
@ -60,3 +59,18 @@ class KeystoneBasicTestCase(test.TestCase):
scenario.create_tenant(name_length=20, enabled=True)
scenario._tenant_create.assert_called_once_with(name_length=20,
enabled=True)
@mock.patch(KEYSTONE_UTILS + "generate_keystone_name")
def test_create_tenant_with_users(self, mock_gen_name):
scenario = basic.KeystoneBasic()
mock_gen_name.return_value = "teeeest"
scenario._tenant_create = mock.MagicMock()
tenant = scenario.create_tenant(name_length=20, enabled=True)
scenario._tenant_create.assert_called_once_with(name_length=20,
enabled=True)
scenario._users_create = mock.MagicMock()
scenario._users_create(tenant, name_length=20, users_per_tenant=1,
enabled=True)
scenario._users_create.assert_called_once_with(tenant, name_length=20,
users_per_tenant=1,
enabled=True)

View File

@ -102,3 +102,23 @@ class KeystoneScenarioTestCase(test.TestCase):
fake_keystone.tenants.create.assert_called_once_with(name)
self._test_atomic_action_timer(scenario.atomic_actions_time(),
'keystone.create_tenant')
@mock.patch(UTILS + "generate_keystone_name")
def test_tenant_create_with_users(self, mock_gen_name):
name = "abc"
mock_gen_name.return_value = name
tenant = mock.MagicMock()
fake_keystone = fakes.FakeKeystoneClient()
fake_keystone.users.create = mock.MagicMock()
fake_clients = fakes.FakeClients()
fake_clients._keystone = fake_keystone
scenario = utils.KeystoneScenario(admin_clients=fake_clients)
scenario._users_create(tenant, 10, 1)
fake_keystone.users.create.assert_called_once_with(name, name,
name + "@rally.me",
tenant_id=tenant.id)
self._test_atomic_action_timer(scenario.atomic_actions_time(),
'keystone.create_users')