Additional checks for ceilometers and designate scenarios
Patch adds verification of resuls of creation and list actions. Patch contains changes in both scenarios and unit tests and affect on following scenarios: rally/plugins/openstack/scenarios/ceilometer/events.py rally/plugins/openstack/scenarios/ceilometer/resources.py rally/plugins/openstack/scenarios/designate/basic.py rally/plugins/openstack/scenarios/glance/images.py rally/plugins/openstack/scenarios/heat/stacks.py rally/plugins/openstack/scenarios/ironic/nodes.py rally/plugins/openstack/scenarios/keystone/basic.py rally/plugins/openstack/scenarios/magnum/clusters.py rally/plugins/openstack/scenarios/manila/shares.py Change-Id: I5b0156c809cc4be3e265198e64fea1e9251c78a9
This commit is contained in:
@@ -17,7 +17,6 @@ Scenarios for Ceilometer Events API.
|
||||
"""
|
||||
|
||||
from rally import consts
|
||||
from rally import exceptions
|
||||
from rally.plugins.openstack import scenario
|
||||
from rally.plugins.openstack.scenarios.ceilometer import utils as cutils
|
||||
from rally.plugins.openstack.scenarios.keystone import basic as kbasic
|
||||
@@ -45,10 +44,9 @@ class CeilometerEventsCreateUserAndListEvents(cutils.CeilometerScenario,
|
||||
"""
|
||||
self.admin_keystone.create_user()
|
||||
events = self._list_events()
|
||||
if not events:
|
||||
raise exceptions.RallyException(
|
||||
"Events list is empty, but it should include at least one "
|
||||
"event about user creation")
|
||||
msg = ("Events list is empty, but it should include at least one "
|
||||
"event about user creation")
|
||||
self.assertTrue(events, msg)
|
||||
|
||||
|
||||
@validation.required_services(consts.Service.CEILOMETER,
|
||||
@@ -68,10 +66,9 @@ class CeilometerEventsCreateUserAndListEventTypes(cutils.CeilometerScenario,
|
||||
"""
|
||||
self.admin_keystone.create_user()
|
||||
event_types = self._list_event_types()
|
||||
if not event_types:
|
||||
raise exceptions.RallyException(
|
||||
"Event types list is empty, but it should include at least one"
|
||||
" type about user creation")
|
||||
msg = ("Event types list is empty, but it should include at least one"
|
||||
" type about user creation")
|
||||
self.assertTrue(event_types, msg)
|
||||
|
||||
|
||||
@validation.required_services(consts.Service.CEILOMETER,
|
||||
@@ -91,9 +88,7 @@ class CeilometerEventsCreateUserAndGetEvent(cutils.CeilometerScenario,
|
||||
"""
|
||||
self.admin_keystone.create_user()
|
||||
events = self._list_events()
|
||||
if not events:
|
||||
raise exceptions.RallyException(
|
||||
"Events list is empty, but it should include at least one "
|
||||
"event about user creation")
|
||||
event = events[0]
|
||||
self._get_event(event_id=event.message_id)
|
||||
msg = ("Events list is empty, but it should include at least one "
|
||||
"event about user creation")
|
||||
self.assertTrue(events, msg)
|
||||
self._get_event(event_id=events[0].message_id)
|
||||
|
||||
@@ -13,7 +13,6 @@
|
||||
# under the License.
|
||||
|
||||
from rally import consts
|
||||
from rally import exceptions
|
||||
from rally.plugins.openstack import scenario
|
||||
from rally.plugins.openstack.scenarios.ceilometer import utils as ceiloutils
|
||||
from rally.task import validation
|
||||
@@ -67,10 +66,9 @@ class GetTenantResources(ceiloutils.CeilometerScenario):
|
||||
GET /v2/resources/(resource_id)
|
||||
"""
|
||||
resources = self.context["tenant"].get("resources", [])
|
||||
if not resources:
|
||||
msg = ("No resources found for tenant: %s"
|
||||
% self.context["tenant"].get("name"))
|
||||
raise exceptions.NotFoundException(message=msg)
|
||||
msg = ("No resources found for tenant: %s"
|
||||
% self.context["tenant"].get("name"))
|
||||
self.assertTrue(resources, msg)
|
||||
for res_id in resources:
|
||||
self._get_resource(res_id)
|
||||
|
||||
|
||||
@@ -42,8 +42,11 @@ class CreateAndListDomains(utils.DesignateScenario):
|
||||
performance of the "designate domain-list" command depending on
|
||||
the number of domains owned by users.
|
||||
"""
|
||||
self._create_domain()
|
||||
self._list_domains()
|
||||
domain = self._create_domain()
|
||||
msg = "Domain isn't created"
|
||||
self.assertTrue(domain, msg)
|
||||
list_domains = self._list_domains()
|
||||
self.assertIn(domain, list_domains)
|
||||
|
||||
|
||||
@validation.required_services(consts.Service.DESIGNATE)
|
||||
@@ -170,11 +173,14 @@ class CreateAndListRecords(utils.DesignateScenario):
|
||||
domain = self._create_domain()
|
||||
|
||||
key = "designate.create_%s_records" % records_per_domain
|
||||
records = []
|
||||
with atomic.ActionTimer(self, key):
|
||||
for i in range(records_per_domain):
|
||||
self._create_record(domain, atomic_action=False)
|
||||
records.append(
|
||||
self._create_record(domain, atomic_action=False))
|
||||
|
||||
self._list_records(domain["id"])
|
||||
list_records = self._list_records(domain["id"])
|
||||
self.assertEqual(records, list_records)
|
||||
|
||||
|
||||
@validation.required_services(consts.Service.DESIGNATE)
|
||||
@@ -192,8 +198,10 @@ class CreateAndListServers(utils.DesignateScenario):
|
||||
performance of the "designate server-list" command depending on
|
||||
the number of servers owned by users.
|
||||
"""
|
||||
self._create_server()
|
||||
self._list_servers()
|
||||
server = self._create_server()
|
||||
self.assertTrue(server)
|
||||
list_servers = self._list_servers()
|
||||
self.assertIn(server, list_servers)
|
||||
|
||||
|
||||
@validation.required_services(consts.Service.DESIGNATE)
|
||||
@@ -245,8 +253,10 @@ class CreateAndListZones(utils.DesignateScenario):
|
||||
performance of the "openstack zone list" command depending on
|
||||
the number of zones owned by users.
|
||||
"""
|
||||
self._create_zone()
|
||||
self._list_zones()
|
||||
zone = self._create_zone()
|
||||
self.assertTrue(zone)
|
||||
list_zones = self._list_zones()
|
||||
self.assertIn(zone, list_zones)
|
||||
|
||||
|
||||
@validation.required_services(consts.Service.DESIGNATE)
|
||||
|
||||
@@ -51,11 +51,13 @@ class CreateAndListImage(utils.GlanceScenario, nova_utils.NovaScenario):
|
||||
ami, ari, aki, vhd, vmdk, raw, qcow2, vdi, and iso
|
||||
:param kwargs: optional parameters to create image
|
||||
"""
|
||||
self._create_image(container_format,
|
||||
image_location,
|
||||
disk_format,
|
||||
**kwargs)
|
||||
self._list_images()
|
||||
image = self._create_image(container_format,
|
||||
image_location,
|
||||
disk_format,
|
||||
**kwargs)
|
||||
self.assertTrue(image)
|
||||
image_list = self._list_images()
|
||||
self.assertIn(image.id, [i.id for i in image_list])
|
||||
|
||||
|
||||
@validation.required_services(consts.Service.GLANCE)
|
||||
@@ -137,6 +139,5 @@ class CreateImageAndBootInstances(utils.GlanceScenario,
|
||||
image_location,
|
||||
disk_format,
|
||||
**create_image_kwargs)
|
||||
image_id = image.id
|
||||
self._boot_servers(image_id, flavor, number_instances,
|
||||
self._boot_servers(image.id, flavor, number_instances,
|
||||
**boot_server_kwargs)
|
||||
|
||||
@@ -44,8 +44,11 @@ class CreateAndListStack(utils.HeatScenario):
|
||||
:param files: files used in template
|
||||
:param environment: stack environment definition
|
||||
"""
|
||||
self._create_stack(template_path, parameters, files, environment)
|
||||
self._list_stacks()
|
||||
stack = self._create_stack(template_path, parameters,
|
||||
files, environment)
|
||||
self.assertTrue(stack)
|
||||
list_stacks = self._list_stacks()
|
||||
self.assertIn(stack.id, [i.id for i in list_stacks])
|
||||
|
||||
|
||||
@validation.required_services(consts.Service.HEAT)
|
||||
|
||||
@@ -61,11 +61,12 @@ class CreateAndListNode(utils.IronicScenario):
|
||||
:param kwargs: Optional additional arguments for node creation
|
||||
"""
|
||||
|
||||
self._create_node(**kwargs)
|
||||
|
||||
self._list_nodes(
|
||||
node = self._create_node(**kwargs)
|
||||
self.assertTrue(node)
|
||||
list_nodes = self._list_nodes(
|
||||
associated=associated, maintenance=maintenance, marker=marker,
|
||||
limit=limit, detail=detail, sort_key=sort_key, sort_dir=sort_dir)
|
||||
self.assertIn(node, list_nodes)
|
||||
|
||||
|
||||
@validation.required_parameters("driver")
|
||||
|
||||
@@ -153,6 +153,7 @@ class CreateAndListUsers(KeystoneBasic):
|
||||
:param kwargs: Other optional parameters to create users like
|
||||
"tenant_id", "enabled".
|
||||
"""
|
||||
|
||||
kwargs.pop("name", None)
|
||||
self.admin_keystone.create_user(**kwargs)
|
||||
self.admin_keystone.list_users()
|
||||
|
||||
@@ -61,5 +61,8 @@ class CreateAndListClusters(utils.MagnumScenario):
|
||||
cluster_template_uuid = kwargs.get("cluster_template_uuid", None)
|
||||
if cluster_template_uuid is None:
|
||||
cluster_template_uuid = self.context["tenant"]["cluster_template"]
|
||||
self._create_cluster(cluster_template_uuid, node_count, **kwargs)
|
||||
self._list_clusters(**kwargs)
|
||||
cluster = self._create_cluster(cluster_template_uuid,
|
||||
node_count, **kwargs)
|
||||
self.assertTrue(cluster)
|
||||
list_clusters = self._list_clusters(**kwargs)
|
||||
self.assertIn(cluster, list_clusters)
|
||||
|
||||
@@ -104,4 +104,4 @@ class CeilometerResourcesTestCase(test.ScenarioTestCase):
|
||||
context = {"user": {"tenant_id": "fake"},
|
||||
"tenant": {"id": "fake", "resources": resource_list}}
|
||||
scenario.context = context
|
||||
self.assertRaises(exceptions.NotFoundException, scenario.run)
|
||||
self.assertRaises(exceptions.RallyAssertionError, scenario.run)
|
||||
|
||||
@@ -16,6 +16,7 @@
|
||||
|
||||
import mock
|
||||
|
||||
from rally import exceptions
|
||||
from rally.plugins.openstack.scenarios.designate import basic
|
||||
from tests.unit import test
|
||||
|
||||
@@ -29,10 +30,31 @@ class DesignateBasicTestCase(test.ScenarioTestCase):
|
||||
def test_create_and_list_domains(self,
|
||||
mock__create_domain,
|
||||
mock__list_domains):
|
||||
mock__create_domain.return_value = "fake_domain.xyz"
|
||||
mock__list_domains.return_value = (["fake_domain.org",
|
||||
"fake_domain.xyz",
|
||||
"ultimate_question.net"])
|
||||
basic.CreateAndListDomains(self.context).run()
|
||||
mock__create_domain.assert_called_once_with()
|
||||
mock__list_domains.assert_called_once_with()
|
||||
|
||||
@mock.patch("%s.CreateAndListDomains._list_domains" % BASE)
|
||||
@mock.patch("%s.CreateAndListDomains._create_domain" % BASE)
|
||||
def test_create_and_list_domains_fails(self,
|
||||
mock__create_domain,
|
||||
mock__list_domains):
|
||||
mock__list_domains.return_value = (["fake_domain.org",
|
||||
"fake_domain.xyz",
|
||||
"ultimate_question.net"])
|
||||
scenario = basic.CreateAndListDomains(self.context)
|
||||
self.assertRaises(exceptions.RallyAssertionError, scenario.run)
|
||||
mock__create_domain.assert_called_once_with()
|
||||
|
||||
mock__create_domain.return_value = "fake_not_existed_domain.xyz"
|
||||
self.assertRaises(exceptions.RallyAssertionError, scenario.run)
|
||||
mock__create_domain.assert_called_with()
|
||||
mock__list_domains.assert_called_with()
|
||||
|
||||
@mock.patch("%s.CreateAndDeleteDomain._delete_domain" % BASE)
|
||||
@mock.patch("%s.CreateAndDeleteDomain._create_domain" % BASE,
|
||||
return_value={"id": "123"})
|
||||
@@ -76,12 +98,16 @@ class DesignateBasicTestCase(test.ScenarioTestCase):
|
||||
"id": "123"}
|
||||
mock__create_domain.return_value = domain
|
||||
records_per_domain = 5
|
||||
return_value = mock.call(domain, atomic_action=False)
|
||||
mock__create_record.return_value = return_value
|
||||
mock__list_records.return_value = [return_value] * records_per_domain
|
||||
|
||||
basic.CreateAndListRecords(self.context).run(
|
||||
records_per_domain=records_per_domain)
|
||||
mock__create_domain.assert_called_once_with()
|
||||
|
||||
self.assertEqual(mock__create_record.mock_calls,
|
||||
[mock.call(domain, atomic_action=False)]
|
||||
[return_value]
|
||||
* records_per_domain)
|
||||
mock__list_records.assert_called_once_with(domain["id"])
|
||||
|
||||
@@ -122,11 +148,32 @@ class DesignateBasicTestCase(test.ScenarioTestCase):
|
||||
def test_create_and_list_servers(self,
|
||||
mock__create_server,
|
||||
mock__list_servers):
|
||||
mock__create_server.return_value = "fake_server"
|
||||
mock__list_servers.return_value = ["fake_srv1",
|
||||
"fake_srv2",
|
||||
"fake_server"]
|
||||
|
||||
# Positive case:
|
||||
basic.CreateAndListServers(self.context).run()
|
||||
|
||||
mock__create_server.assert_called_once_with()
|
||||
mock__list_servers.assert_called_once_with()
|
||||
|
||||
# Negative case: server isn't created
|
||||
mock__create_server.return_value = None
|
||||
self.assertRaises(exceptions.RallyAssertionError,
|
||||
basic.CreateAndListServers(self.context).run)
|
||||
|
||||
mock__create_server.assert_called_with()
|
||||
|
||||
# Negative case: server not found in the list of existed servers
|
||||
mock__create_server.return_value = "The_main_server_of_the_universe"
|
||||
self.assertRaises(exceptions.RallyAssertionError,
|
||||
basic.CreateAndListServers(self.context).run)
|
||||
|
||||
mock__create_server.assert_called_with()
|
||||
mock__list_servers.assert_called_with()
|
||||
|
||||
@mock.patch("%s.CreateAndDeleteServer._delete_server" % BASE)
|
||||
@mock.patch("%s.CreateAndDeleteServer._create_server" % BASE,
|
||||
return_value={"id": "123"})
|
||||
@@ -149,10 +196,28 @@ class DesignateBasicTestCase(test.ScenarioTestCase):
|
||||
def test_create_and_list_zones(self,
|
||||
mock__create_zone,
|
||||
mock__list_zones):
|
||||
mock__create_zone.return_value = "Area_51"
|
||||
mock__list_zones.return_value = ["Area_51",
|
||||
"Siachen",
|
||||
"Bagram"]
|
||||
# Positive case:
|
||||
basic.CreateAndListZones(self.context).run()
|
||||
mock__create_zone.assert_called_once_with()
|
||||
mock__list_zones.assert_called_once_with()
|
||||
|
||||
# Negative case: zone isn't created
|
||||
mock__create_zone.return_value = None
|
||||
self.assertRaises(exceptions.RallyAssertionError,
|
||||
basic.CreateAndListZones(self.context).run)
|
||||
mock__create_zone.assert_called_with()
|
||||
|
||||
# Negative case: created zone not in the list of available zones
|
||||
mock__create_zone.return_value = "HAARP"
|
||||
self.assertRaises(exceptions.RallyAssertionError,
|
||||
basic.CreateAndListZones(self.context).run)
|
||||
mock__create_zone.assert_called_with()
|
||||
mock__list_zones.assert_called_with()
|
||||
|
||||
@mock.patch("%s.CreateAndDeleteZone._delete_zone" % BASE)
|
||||
@mock.patch("%s.CreateAndDeleteZone._create_zone" % BASE,
|
||||
return_value={"id": "123"})
|
||||
|
||||
@@ -15,6 +15,7 @@
|
||||
|
||||
import mock
|
||||
|
||||
from rally import exceptions
|
||||
from rally.plugins.openstack.scenarios.glance import images
|
||||
from tests.unit import fakes
|
||||
from tests.unit import test
|
||||
@@ -26,18 +27,43 @@ class GlanceImagesTestCase(test.ScenarioTestCase):
|
||||
|
||||
@mock.patch("%s.CreateAndListImage._list_images" % BASE)
|
||||
@mock.patch("%s.CreateAndListImage._create_image" % BASE)
|
||||
@mock.patch("%s.CreateAndListImage.generate_random_name" % BASE,
|
||||
return_value="test-rally-image")
|
||||
def test_create_and_list_image(self,
|
||||
mock_random_name,
|
||||
mock_create_image,
|
||||
mock_list_images):
|
||||
|
||||
fake_image = fakes.FakeImage(id=1, name="img_name1")
|
||||
mock_create_image.return_value = fake_image
|
||||
mock_list_images.return_value = [
|
||||
fakes.FakeImage(id=0, name="img_name1"),
|
||||
fake_image,
|
||||
fakes.FakeImage(id=2, name="img_name1")
|
||||
]
|
||||
|
||||
# Positive case
|
||||
images.CreateAndListImage(self.context).run(
|
||||
"cf", "url", "df", fakearg="f")
|
||||
mock_create_image.assert_called_once_with(
|
||||
"cf", "url", "df", fakearg="f")
|
||||
mock_list_images.assert_called_once_with()
|
||||
|
||||
# Negative case: image isn't created
|
||||
mock_create_image.return_value = None
|
||||
self.assertRaises(exceptions.RallyAssertionError,
|
||||
images.CreateAndListImage(self.context).run,
|
||||
"cf", "url", "df", fakearg="f")
|
||||
mock_create_image.assert_called_with(
|
||||
"cf", "url", "df", fakearg="f")
|
||||
|
||||
# Negative case: created image n ot in the list of available images
|
||||
mock_create_image.return_value = fakes.FakeImage(
|
||||
id=12, name="img_nameN")
|
||||
self.assertRaises(exceptions.RallyAssertionError,
|
||||
images.CreateAndListImage(self.context).run,
|
||||
"cf", "url", "df", fakearg="f")
|
||||
mock_create_image.assert_called_with(
|
||||
"cf", "url", "df", fakearg="f")
|
||||
mock_list_images.assert_called_with()
|
||||
|
||||
@mock.patch("%s.ListImages._list_images" % BASE)
|
||||
def test_list_images(self, mock_list_images__list_images):
|
||||
images.ListImages(self.context).run()
|
||||
|
||||
@@ -15,6 +15,7 @@
|
||||
|
||||
import mock
|
||||
|
||||
from rally import exceptions
|
||||
from rally.plugins.openstack.scenarios.heat import stacks
|
||||
from tests.unit import test
|
||||
|
||||
@@ -33,12 +34,14 @@ class HeatStacksTestCase(test.ScenarioTestCase):
|
||||
|
||||
@mock.patch("%s.CreateAndListStack._list_stacks" % BASE)
|
||||
@mock.patch("%s.CreateAndListStack._create_stack" % BASE)
|
||||
@mock.patch("%s.CreateAndListStack.generate_random_name" % BASE,
|
||||
return_value="test-rally-stack")
|
||||
def test_create_and_list_stack(self,
|
||||
mock_generate_random_name,
|
||||
mock__create_stack,
|
||||
mock__list_stacks):
|
||||
stack = mock.Mock()
|
||||
mock__create_stack.return_value = stack
|
||||
mock__list_stacks.return_value = [stack] * 3
|
||||
|
||||
# Positive case:
|
||||
stacks.CreateAndListStack(self.context).run(
|
||||
template_path=self.default_template,
|
||||
parameters=self.default_parameters,
|
||||
@@ -50,6 +53,34 @@ class HeatStacksTestCase(test.ScenarioTestCase):
|
||||
self.default_files, self.default_environment)
|
||||
mock__list_stacks.assert_called_once_with()
|
||||
|
||||
# Negative case1: stack isn't created
|
||||
mock__create_stack.return_value = None
|
||||
self.assertRaises(exceptions.RallyAssertionError,
|
||||
stacks.CreateAndListStack(self.context).run,
|
||||
template_path=self.default_template,
|
||||
parameters=self.default_parameters,
|
||||
files=self.default_files,
|
||||
environment=self.default_environment)
|
||||
|
||||
mock__create_stack.assert_called_with(
|
||||
self.default_template, self.default_parameters,
|
||||
self.default_files, self.default_environment)
|
||||
|
||||
# Negative case2: created stack not in the list of available stacks
|
||||
fake_stack = mock.Mock()
|
||||
mock__create_stack.return_value = fake_stack
|
||||
self.assertRaises(exceptions.RallyAssertionError,
|
||||
stacks.CreateAndListStack(self.context).run,
|
||||
template_path=self.default_template,
|
||||
parameters=self.default_parameters,
|
||||
files=self.default_files,
|
||||
environment=self.default_environment)
|
||||
|
||||
mock__create_stack.assert_called_with(
|
||||
self.default_template, self.default_parameters,
|
||||
self.default_files, self.default_environment)
|
||||
mock__list_stacks.assert_called_with()
|
||||
|
||||
@mock.patch("%s.ListStacksAndResources._list_stacks" % BASE)
|
||||
def test_list_stack_and_resources(self, mock__list_stacks):
|
||||
stack = mock.Mock()
|
||||
|
||||
@@ -15,6 +15,7 @@
|
||||
|
||||
import mock
|
||||
|
||||
from rally import exceptions
|
||||
from rally.plugins.openstack.scenarios.ironic import nodes
|
||||
from tests.unit import test
|
||||
|
||||
@@ -23,8 +24,10 @@ class IronicNodesTestCase(test.ScenarioTestCase):
|
||||
|
||||
def test_create_and_list_node(self):
|
||||
scenario = nodes.CreateAndListNode(self.context)
|
||||
scenario._create_node = mock.Mock()
|
||||
scenario._list_nodes = mock.Mock()
|
||||
scenario._create_node = mock.Mock(return_value="node_obj1")
|
||||
scenario._list_nodes = mock.Mock(return_value=["node_obj1",
|
||||
"node_obj2",
|
||||
"node_obj3"])
|
||||
fake_params = {
|
||||
"sort_dir": "foo1",
|
||||
"associated": "foo2",
|
||||
@@ -35,6 +38,8 @@ class IronicNodesTestCase(test.ScenarioTestCase):
|
||||
"marker": "foo6",
|
||||
"fake_parameter1": "foo7"
|
||||
}
|
||||
|
||||
# Positive case:
|
||||
scenario.run(**fake_params)
|
||||
|
||||
scenario._create_node.assert_called_once_with(fake_parameter1="foo7")
|
||||
@@ -42,6 +47,25 @@ class IronicNodesTestCase(test.ScenarioTestCase):
|
||||
sort_dir="foo1", associated="foo2", sort_key="foo3", detail=True,
|
||||
limit="foo4", maintenance="foo5", marker="foo6")
|
||||
|
||||
# Negative case1: node isn't created
|
||||
scenario._create_node = mock.Mock(return_value=None)
|
||||
self.assertRaises(exceptions.RallyAssertionError,
|
||||
scenario.run,
|
||||
**fake_params)
|
||||
|
||||
scenario._create_node.assert_called_with(fake_parameter1="foo7")
|
||||
|
||||
# Negative case2: cretaed node not in the list of available nodes
|
||||
scenario._create_node = mock.Mock()
|
||||
self.assertRaises(exceptions.RallyAssertionError,
|
||||
scenario.run,
|
||||
**fake_params)
|
||||
|
||||
scenario._create_node.assert_called_with(fake_parameter1="foo7")
|
||||
scenario._list_nodes.assert_called_with(
|
||||
sort_dir="foo1", associated="foo2", sort_key="foo3", detail=True,
|
||||
limit="foo4", maintenance="foo5", marker="foo6")
|
||||
|
||||
def test_create_and_delete_node(self):
|
||||
fake_node = mock.Mock(uuid="fake_uuid")
|
||||
scenario = nodes.CreateAndDeleteNode(self.context)
|
||||
|
||||
@@ -129,7 +129,6 @@ class KeystoneBasicTestCase(test.ScenarioTestCase):
|
||||
def test_create_and_list_tenants(self):
|
||||
identity_service = self.mock_identity.return_value
|
||||
scenario = basic.CreateAndListTenants(self.context)
|
||||
|
||||
scenario.run(enabled=True)
|
||||
identity_service.create_project.assert_called_once_with(enabled=True)
|
||||
identity_service.list_projects.assert_called_once_with()
|
||||
|
||||
@@ -15,6 +15,7 @@
|
||||
import ddt
|
||||
import mock
|
||||
|
||||
from rally import exceptions
|
||||
from rally.plugins.openstack.scenarios.magnum import clusters
|
||||
from tests.unit import test
|
||||
|
||||
@@ -50,24 +51,60 @@ class MagnumClustersTestCase(test.ScenarioTestCase):
|
||||
"fakearg": "f"}
|
||||
fake_cluster = mock.Mock()
|
||||
scenario._create_cluster = mock.Mock(return_value=fake_cluster)
|
||||
scenario._list_clusters = mock.Mock()
|
||||
scenario._list_clusters = mock.Mock(return_value=[fake_cluster,
|
||||
mock.Mock(),
|
||||
mock.Mock()])
|
||||
|
||||
# Positive case
|
||||
scenario.run(2, **kwargs)
|
||||
|
||||
scenario._create_cluster.assert_called_once_with(
|
||||
"existing_cluster_template_uuid", 2, **kwargs)
|
||||
scenario._list_clusters.assert_called_once_with(**kwargs)
|
||||
|
||||
# Negative case1: cluster isn't created
|
||||
scenario._create_cluster.return_value = None
|
||||
self.assertRaises(exceptions.RallyAssertionError,
|
||||
scenario.run, 2, **kwargs)
|
||||
scenario._create_cluster.assert_called_with(
|
||||
"existing_cluster_template_uuid", 2, **kwargs)
|
||||
|
||||
# Negative case2: created cluster not in the list of available clusters
|
||||
scenario._create_cluster.return_value = mock.MagicMock()
|
||||
self.assertRaises(exceptions.RallyAssertionError,
|
||||
scenario.run, 2, **kwargs)
|
||||
scenario._create_cluster.assert_called_with(
|
||||
"existing_cluster_template_uuid", 2, **kwargs)
|
||||
scenario._list_clusters.assert_called_with(**kwargs)
|
||||
|
||||
def test_create_and_list_clusters(self):
|
||||
context = self._get_context()
|
||||
scenario = clusters.CreateAndListClusters(context)
|
||||
fake_cluster = mock.Mock()
|
||||
kwargs = {"fakearg": "f"}
|
||||
scenario._create_cluster = mock.Mock(return_value=fake_cluster)
|
||||
scenario._list_clusters = mock.Mock()
|
||||
scenario._list_clusters = mock.Mock(return_value=[fake_cluster,
|
||||
mock.Mock(),
|
||||
mock.Mock()])
|
||||
|
||||
# Positive case
|
||||
scenario.run(2, **kwargs)
|
||||
|
||||
scenario._create_cluster.assert_called_once_with(
|
||||
"rally_cluster_template_uuid", 2, **kwargs)
|
||||
scenario._list_clusters.assert_called_once_with(**kwargs)
|
||||
|
||||
# Negative case1: cluster isn't created
|
||||
scenario._create_cluster.return_value = None
|
||||
self.assertRaises(exceptions.RallyAssertionError,
|
||||
scenario.run, 2, **kwargs)
|
||||
scenario._create_cluster.assert_called_with(
|
||||
"rally_cluster_template_uuid", 2, **kwargs)
|
||||
|
||||
# Negative case2: created cluster not in the list of available clusters
|
||||
scenario._create_cluster.return_value = mock.MagicMock()
|
||||
self.assertRaises(exceptions.RallyAssertionError,
|
||||
scenario.run, 2, **kwargs)
|
||||
scenario._create_cluster.assert_called_with(
|
||||
"rally_cluster_template_uuid", 2, **kwargs)
|
||||
scenario._list_clusters.assert_called_with(**kwargs)
|
||||
|
||||
@@ -106,8 +106,13 @@ class ManilaSharesTestCase(test.ScenarioTestCase):
|
||||
)
|
||||
def test_create_share_network_and_list(self, params):
|
||||
scenario = shares.CreateShareNetworkAndList(self.context)
|
||||
scenario._create_share_network = mock.MagicMock()
|
||||
scenario._list_share_networks = mock.MagicMock()
|
||||
fake_network = mock.Mock()
|
||||
scenario._create_share_network = mock.Mock(
|
||||
return_value=fake_network)
|
||||
scenario._list_share_networks = mock.Mock(
|
||||
return_value=[fake_network,
|
||||
mock.Mock(),
|
||||
mock.Mock()])
|
||||
expected_create_params = {
|
||||
"description": params.get("description"),
|
||||
"neutron_net_id": params.get("neutron_net_id"),
|
||||
|
||||
Reference in New Issue
Block a user