Andrey Kurilin d2f4e9717d Restruct the project
Move all modules under the next structure:

- rally_openstack.common
- rally_openstack.enviromnet
- rally_openstack.task
- rally_openstack.verification

Change-Id: I41702d017cd49b117da3b8e12b19c7327229ae32
2020-03-27 19:06:13 +02:00

243 lines
10 KiB
Python

# Copyright 2014: Mirantis Inc.
# All Rights Reserved.
#
# Licensed under the Apache License, Version 2.0 (the "License"); you may
# not use this file except in compliance with the License. You may obtain
# a copy of the License at
#
# http://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing, software
# distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
# WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
# License for the specific language governing permissions and limitations
# under the License.
from unittest import mock
from rally import exceptions
from rally_openstack.task.scenarios.glance import images
from tests.unit import fakes
from tests.unit import test
BASE = "rally_openstack.task.scenarios.glance.images"
GLANCE_V2_PATH = ("rally_openstack.common.services.image.glance_v2."
"GlanceV2Service")
class GlanceBasicTestCase(test.ScenarioTestCase):
def get_test_context(self):
context = super(GlanceBasicTestCase, self).get_test_context()
context.update({
"admin": {
"id": "fake_user_id",
"credential": mock.MagicMock()
},
"user": {
"id": "fake_user_id",
"credential": mock.MagicMock()
},
"tenant": {"id": "fake_tenant_id",
"name": "fake_tenant_name"}
})
return context
def setUp(self):
super(GlanceBasicTestCase, self).setUp()
patch = mock.patch(
"rally_openstack.common.services.image.image.Image")
self.addCleanup(patch.stop)
self.mock_image = patch.start()
def test_create_and_list_image(self):
image_service = self.mock_image.return_value
fake_image = mock.Mock(id=1, name="img_2")
image_service.create_image.return_value = fake_image
image_service.list_images.return_value = [
mock.Mock(id=0, name="img_1"),
fake_image,
mock.Mock(id=2, name="img_3")]
properties = {"fakeprop": "fake"}
call_args = {"container_format": "cf",
"image_location": "url",
"disk_format": "df",
"visibility": "vs",
"min_disk": 0,
"min_ram": 0,
"properties": properties}
# Positive case
images.CreateAndListImage(self.context).run(
"cf", "url", "df", "vs", 0, 0, properties)
image_service.create_image.assert_called_once_with(**call_args)
# Negative case: image isn't created
image_service.create_image.return_value = None
self.assertRaises(exceptions.RallyAssertionError,
images.CreateAndListImage(self.context).run,
"cf", "url", "df", "vs", 0, 0, properties)
image_service.create_image.assert_called_with(**call_args)
# Negative case: created image n ot in the list of available images
image_service.create_image.return_value = mock.Mock(
id=12, name="img_nameN")
self.assertRaises(exceptions.RallyAssertionError,
images.CreateAndListImage(self.context).run,
"cf", "url", "df", "vs", 0, 0, properties)
image_service.create_image.assert_called_with(**call_args)
image_service.list_images.assert_called_with()
def test_list_images(self):
image_service = self.mock_image.return_value
images.ListImages(self.context).run()
image_service.list_images.assert_called_once_with()
def test_create_and_delete_image(self):
image_service = self.mock_image.return_value
fake_image = fakes.FakeImage(id=1, name="imagexxx")
image_service.create_image.return_value = fake_image
properties = {"fakeprop": "fake"}
call_args = {"container_format": "cf",
"image_location": "url",
"disk_format": "df",
"visibility": "vs",
"min_disk": 0,
"min_ram": 0,
"properties": properties}
images.CreateAndDeleteImage(self.context).run(
"cf", "url", "df", "vs", 0, 0, properties)
image_service.create_image.assert_called_once_with(**call_args)
image_service.delete_image.assert_called_once_with(fake_image.id)
def test_create_and_get_image(self):
image_service = self.mock_image.return_value
fake_image = fakes.FakeImage(id=1, name="img_name1")
image_service.create_image.return_value = fake_image
fake_image_info = fakes.FakeImage(id=1, name="img_name1",
status="active")
image_service.get_image.return_value = fake_image_info
properties = {"fakeprop": "fake"}
call_args = {"container_format": "cf",
"image_location": "url",
"disk_format": "df",
"visibility": "vs",
"min_disk": 0,
"min_ram": 0,
"properties": properties}
# Positive case
images.CreateAndGetImage(self.context).run(
"cf", "url", "df", "vs", 0, 0, properties)
image_service.create_image.assert_called_once_with(**call_args)
image_service.get_image.assert_called_once_with(fake_image)
# Negative case: image isn't created
image_service.create_image.reset_mock()
image_service.create_image.return_value = None
self.assertRaises(exceptions.RallyAssertionError,
images.CreateAndGetImage(self.context).run,
"cf", "url", "df", "vs", 0, 0, properties)
image_service.create_image.assert_called_with(**call_args)
# Negative case: image obtained in _get_image not the created image
image_service.create_image.reset_mock()
image_service.get_image.reset_mock()
image_service.create_image.return_value = fakes.FakeImage(
id=12, name="img_nameN")
self.assertRaises(exceptions.RallyAssertionError,
images.CreateAndGetImage(self.context).run,
"cf", "url", "df", "vs", 0, 0, properties)
image_service.create_image.assert_called_with(**call_args)
image_service.get_image.assert_called_with(
image_service.create_image.return_value)
def test_create_and_download_image(self):
image_service = self.mock_image.return_value
fake_image = fakes.FakeImage()
image_service.create_image.return_value = fake_image
properties = {"fakeprop": "fake"}
call_args = {"container_format": "cf",
"image_location": "url",
"disk_format": "df",
"visibility": "vs",
"min_disk": 0,
"min_ram": 0,
"properties": properties}
images.CreateAndDownloadImage(self.context).run(
"cf", "url", "df", "vs", 0, 0, properties=properties)
image_service.create_image.assert_called_once_with(**call_args)
image_service.download_image.assert_called_once_with(fake_image.id)
@mock.patch("%s.CreateImageAndBootInstances._boot_servers" % BASE)
def test_create_image_and_boot_instances(self, mock_boot_servers):
image_service = self.mock_image.return_value
fake_image = fakes.FakeImage()
fake_servers = [mock.Mock() for i in range(5)]
image_service.create_image.return_value = fake_image
mock_boot_servers.return_value = fake_servers
boot_server_kwargs = {"fakeserverarg": "f"}
properties = {"fakeprop": "fake"}
call_args = {"container_format": "cf",
"image_location": "url",
"disk_format": "df",
"visibility": "vs",
"min_disk": 0,
"min_ram": 0,
"properties": properties}
images.CreateImageAndBootInstances(self.context).run(
"cf", "url", "df", "fid", 5, visibility="vs", min_disk=0,
min_ram=0, properties=properties,
boot_server_kwargs=boot_server_kwargs)
image_service.create_image.assert_called_once_with(**call_args)
mock_boot_servers.assert_called_once_with("image-id-0", "fid",
5, **boot_server_kwargs)
def test_create_and_update_image(self):
image_service = self.mock_image.return_value
fake_image = fakes.FakeImage(id=1, name="imagexxx")
image_service.create_image.return_value = fake_image
properties = {"fakeprop": "fake"}
create_args = {"container_format": "cf",
"image_location": "url",
"disk_format": "df",
"visibility": "vs",
"min_disk": 0,
"min_ram": 0,
"properties": properties}
images.CreateAndUpdateImage(self.context).run(
"cf", "url", "df", None, "vs", 0, 0, properties, 0, 0)
image_service.create_image.assert_called_once_with(**create_args)
image_service.update_image.assert_called_once_with(
fake_image.id, min_disk=0, min_ram=0, remove_props=None)
@mock.patch("%s.create_image" % GLANCE_V2_PATH)
@mock.patch("%s.deactivate_image" % GLANCE_V2_PATH)
def test_create_and_deactivate_image(self, mock_deactivate_image,
mock_create_image):
fake_image = fakes.FakeImage(id=1, name="img_name1")
mock_create_image.return_value = fake_image
call_args = {"container_format": "cf",
"image_location": "url",
"disk_format": "df",
"visibility": "vs",
"min_disk": 0,
"min_ram": 0}
images.CreateAndDeactivateImage(self.context).run(
"cf", "url", "df", "vs", 0, 0)
mock_create_image.assert_called_once_with(**call_args)
mock_deactivate_image.assert_called_once_with(fake_image.id)