Fix old-style mocking of nova_client

When we assign to nova_client, rather than using the decorator form, it
persists through the process lifetime, which pollutes other tests. This
shows up when you start trying to replace nova_client mocks with
requests_mock.

Change-Id: I056085c9b80868a78c95ddda0aeae11865015ad1
This commit is contained in:
Monty Taylor 2017-03-24 08:37:31 -05:00
parent 6673bfeee3
commit da7f7ccb21
No known key found for this signature in database
GPG Key ID: 7BAE94BC7141A594
5 changed files with 235 additions and 297 deletions

View File

@ -17,7 +17,6 @@ test_create_server
Tests for the `create_server` command.
"""
from mock import patch, Mock
import mock
from shade import meta
from shade import OpenStackCloud
@ -28,148 +27,126 @@ from shade.tests.unit import base
class TestCreateServer(base.RequestsMockTestCase):
def test_create_server_with_create_exception(self):
@mock.patch.object(OpenStackCloud, 'nova_client')
def test_create_server_with_create_exception(self, mock_nova):
"""
Test that an exception in the novaclient create raises an exception in
create_server.
"""
with patch("shade.OpenStackCloud.nova_client"):
config = {
"servers.create.side_effect": Exception("exception"),
}
OpenStackCloud.nova_client = Mock(**config)
self.assertRaises(
OpenStackCloudException, self.cloud.create_server,
'server-name', {'id': 'image-id'}, {'id': 'flavor-id'})
mock_nova.servers.create.side_effect = Exception("exception")
self.assertRaises(
OpenStackCloudException, self.cloud.create_server,
'server-name', {'id': 'image-id'}, {'id': 'flavor-id'})
def test_create_server_with_get_exception(self):
@mock.patch.object(OpenStackCloud, 'nova_client')
def test_create_server_with_get_exception(self, mock_nova):
"""
Test that an exception when attempting to get the server instance via
the novaclient raises an exception in create_server.
"""
with patch("shade.OpenStackCloud.nova_client"):
config = {
"servers.create.return_value": Mock(status="BUILD"),
"servers.get.side_effect": Exception("exception")
}
OpenStackCloud.nova_client = Mock(**config)
self.assertRaises(
OpenStackCloudException, self.cloud.create_server,
'server-name', {'id': 'image-id'}, {'id': 'flavor-id'})
mock_nova.servers.create.return_value = mock.Mock(status="BUILD")
mock_nova.servers.get.side_effect = Exception("exception")
self.assertRaises(
OpenStackCloudException, self.cloud.create_server,
'server-name', {'id': 'image-id'}, {'id': 'flavor-id'})
def test_create_server_with_server_error(self):
@mock.patch.object(OpenStackCloud, 'nova_client')
def test_create_server_with_server_error(self, mock_nova):
"""
Test that a server error before we return or begin waiting for the
server instance spawn raises an exception in create_server.
"""
build_server = fakes.FakeServer('1234', '', 'BUILD')
error_server = fakes.FakeServer('1234', '', 'ERROR')
with patch("shade.OpenStackCloud.nova_client"):
config = {
"servers.create.return_value": build_server,
"servers.get.return_value": error_server,
}
OpenStackCloud.nova_client = Mock(**config)
self.assertRaises(
OpenStackCloudException, self.cloud.create_server,
'server-name', {'id': 'image-id'}, {'id': 'flavor-id'})
mock_nova.servers.create.return_value = build_server
mock_nova.servers.get.return_value = error_server
self.assertRaises(
OpenStackCloudException, self.cloud.create_server,
'server-name', {'id': 'image-id'}, {'id': 'flavor-id'})
def test_create_server_wait_server_error(self):
@mock.patch.object(OpenStackCloud, 'nova_client')
def test_create_server_wait_server_error(self, mock_nova):
"""
Test that a server error while waiting for the server to spawn
raises an exception in create_server.
"""
with patch("shade.OpenStackCloud.nova_client"):
build_server = fakes.FakeServer('1234', '', 'BUILD')
error_server = fakes.FakeServer('1234', '', 'ERROR')
fake_floating_ip = fakes.FakeFloatingIP('1234', 'ippool',
'1.1.1.1', '2.2.2.2',
'5678')
config = {
"servers.create.return_value": build_server,
"servers.get.return_value": build_server,
"servers.list.side_effect": [
[build_server], [error_server]],
"floating_ips.list.return_value": [fake_floating_ip]
}
OpenStackCloud.nova_client = Mock(**config)
self.assertRaises(
OpenStackCloudException,
self.cloud.create_server,
'server-name', dict(id='image-id'),
dict(id='flavor-id'), wait=True)
build_server = fakes.FakeServer('1234', '', 'BUILD')
error_server = fakes.FakeServer('1234', '', 'ERROR')
fake_floating_ip = fakes.FakeFloatingIP('1234', 'ippool',
'1.1.1.1', '2.2.2.2',
'5678')
mock_nova.servers.create.return_value = build_server
mock_nova.servers.get.return_value = build_server
mock_nova.servers.list.side_effect = [[build_server], [error_server]]
mock_nova.floating_ips.list.return_value = [fake_floating_ip]
self.assertRaises(
OpenStackCloudException,
self.cloud.create_server,
'server-name', dict(id='image-id'),
dict(id='flavor-id'), wait=True)
def test_create_server_with_timeout(self):
@mock.patch.object(OpenStackCloud, 'nova_client')
def test_create_server_with_timeout(self, mock_nova):
"""
Test that a timeout while waiting for the server to spawn raises an
exception in create_server.
"""
with patch("shade.OpenStackCloud.nova_client"):
fake_server = fakes.FakeServer('1234', '', 'BUILD')
config = {
"servers.create.return_value": fake_server,
"servers.get.return_value": fake_server,
"servers.list.return_value": [fake_server],
}
OpenStackCloud.nova_client = Mock(**config)
self.assertRaises(
OpenStackCloudTimeout,
self.cloud.create_server,
'server-name',
dict(id='image-id'), dict(id='flavor-id'),
wait=True, timeout=0.01)
fake_server = fakes.FakeServer('1234', '', 'BUILD')
mock_nova.servers.create.return_value = fake_server
mock_nova.servers.get.return_value = fake_server
mock_nova.servers.list.return_value = [fake_server]
self.assertRaises(
OpenStackCloudTimeout,
self.cloud.create_server,
'server-name',
dict(id='image-id'), dict(id='flavor-id'),
wait=True, timeout=0.01)
def test_create_server_no_wait(self):
@mock.patch.object(OpenStackCloud, 'nova_client')
def test_create_server_no_wait(self, mock_nova):
"""
Test that create_server with no wait and no exception in the
novaclient create call returns the server instance.
"""
with patch("shade.OpenStackCloud.nova_client"):
fake_server = fakes.FakeServer('1234', '', 'BUILD')
fake_floating_ip = fakes.FakeFloatingIP('1234', 'ippool',
'1.1.1.1', '2.2.2.2',
'5678')
config = {
"servers.create.return_value": fake_server,
"servers.get.return_value": fake_server,
"floating_ips.list.return_value": [fake_floating_ip]
}
OpenStackCloud.nova_client = Mock(**config)
self.assertEqual(
self.cloud._normalize_server(
meta.obj_to_dict(fake_server)),
self.cloud.create_server(
name='server-name',
image=dict(id='image=id'),
flavor=dict(id='flavor-id')))
fake_server = fakes.FakeServer('1234', '', 'BUILD')
fake_floating_ip = fakes.FakeFloatingIP('1234', 'ippool',
'1.1.1.1', '2.2.2.2',
'5678')
mock_nova.servers.create.return_value = fake_server
mock_nova.servers.get.return_value = fake_server
mock_nova.floating_ips.list.return_value = [fake_floating_ip]
self.assertEqual(
self.cloud._normalize_server(
meta.obj_to_dict(fake_server)),
self.cloud.create_server(
name='server-name',
image=dict(id='image=id'),
flavor=dict(id='flavor-id')))
def test_create_server_with_admin_pass_no_wait(self):
@mock.patch.object(OpenStackCloud, 'nova_client')
def test_create_server_with_admin_pass_no_wait(self, mock_nova):
"""
Test that a server with an admin_pass passed returns the password
"""
with patch("shade.OpenStackCloud.nova_client"):
fake_server = fakes.FakeServer('1234', '', 'BUILD')
fake_create_server = fakes.FakeServer('1234', '', 'BUILD',
adminPass='ooBootheiX0edoh')
fake_floating_ip = fakes.FakeFloatingIP('1234', 'ippool',
'1.1.1.1', '2.2.2.2',
'5678')
config = {
"servers.create.return_value": fake_create_server,
"servers.get.return_value": fake_server,
"floating_ips.list.return_value": [fake_floating_ip]
}
OpenStackCloud.nova_client = Mock(**config)
self.assertEqual(
self.cloud._normalize_server(
meta.obj_to_dict(fake_create_server)),
self.cloud.create_server(
name='server-name', image=dict(id='image=id'),
flavor=dict(id='flavor-id'), admin_pass='ooBootheiX0edoh'))
fake_server = fakes.FakeServer('1234', '', 'BUILD')
fake_create_server = fakes.FakeServer('1234', '', 'BUILD',
adminPass='ooBootheiX0edoh')
fake_floating_ip = fakes.FakeFloatingIP('1234', 'ippool',
'1.1.1.1', '2.2.2.2',
'5678')
mock_nova.servers.create.return_value = fake_create_server
mock_nova.servers.get.return_value = fake_server
mock_nova.floating_ips.list.return_value = [fake_floating_ip]
self.assertEqual(
self.cloud._normalize_server(
meta.obj_to_dict(fake_create_server)),
self.cloud.create_server(
name='server-name', image=dict(id='image=id'),
flavor=dict(id='flavor-id'), admin_pass='ooBootheiX0edoh'))
@patch.object(OpenStackCloud, "wait_for_server")
@patch.object(OpenStackCloud, "nova_client")
@mock.patch.object(OpenStackCloud, "wait_for_server")
@mock.patch.object(OpenStackCloud, "nova_client")
def test_create_server_with_admin_pass_wait(self, mock_nova, mock_wait):
"""
Test that a server with an admin_pass passed returns the password
@ -199,8 +176,8 @@ class TestCreateServer(base.RequestsMockTestCase):
meta.obj_to_dict(fake_server_with_pass))
)
@patch.object(OpenStackCloud, "get_active_server")
@patch.object(OpenStackCloud, "get_server")
@mock.patch.object(OpenStackCloud, "get_active_server")
@mock.patch.object(OpenStackCloud, "get_server")
def test_wait_for_server(self, mock_get_server, mock_get_active_server):
"""
Test that waiting for a server returns the server instance when
@ -233,8 +210,8 @@ class TestCreateServer(base.RequestsMockTestCase):
self.assertEqual('ACTIVE', server['status'])
@patch.object(OpenStackCloud, 'wait_for_server')
@patch.object(OpenStackCloud, 'nova_client')
@mock.patch.object(OpenStackCloud, 'wait_for_server')
@mock.patch.object(OpenStackCloud, 'nova_client')
def test_create_server_wait(self, mock_nova, mock_wait):
"""
Test that create_server with a wait actually does the wait.
@ -252,37 +229,35 @@ class TestCreateServer(base.RequestsMockTestCase):
nat_destination=None,
)
@patch('time.sleep')
def test_create_server_no_addresses(self, mock_sleep):
@mock.patch.object(OpenStackCloud, 'add_ips_to_server')
@mock.patch.object(OpenStackCloud, 'nova_client')
@mock.patch('time.sleep')
def test_create_server_no_addresses(
self, mock_sleep, mock_nova, mock_add_ips_to_server):
"""
Test that create_server with a wait throws an exception if the
server doesn't have addresses.
"""
with patch("shade.OpenStackCloud.nova_client"):
build_server = fakes.FakeServer('1234', '', 'BUILD')
fake_server = fakes.FakeServer('1234', '', 'ACTIVE')
fake_floating_ip = fakes.FakeFloatingIP('1234', 'ippool',
'1.1.1.1', '2.2.2.2',
'5678')
config = {
"servers.create.return_value": build_server,
"servers.get.return_value": [build_server, None],
"servers.list.side_effect": [
[build_server], [fake_server]],
"servers.delete.return_value": None,
"floating_ips.list.return_value": [fake_floating_ip]
}
OpenStackCloud.nova_client = Mock(**config)
self.cloud._SERVER_AGE = 0
with patch.object(OpenStackCloud, "add_ips_to_server",
return_value=fake_server):
self.assertRaises(
OpenStackCloudException, self.cloud.create_server,
'server-name', {'id': 'image-id'}, {'id': 'flavor-id'},
wait=True)
build_server = fakes.FakeServer('1234', '', 'BUILD')
fake_server = fakes.FakeServer('1234', '', 'ACTIVE')
fake_floating_ip = fakes.FakeFloatingIP('1234', 'ippool',
'1.1.1.1', '2.2.2.2',
'5678')
mock_nova.servers.create.return_value = build_server
mock_nova.servers.get.return_value = [build_server, None]
mock_nova.servers.list.side_effect = [[build_server], [fake_server]]
mock_nova.servers.delete.return_value = None
mock_nova.floating_ips.list.return_value = [fake_floating_ip]
mock_add_ips_to_server.return_value = fake_server
self.cloud._SERVER_AGE = 0
@patch('shade.OpenStackCloud.nova_client')
@patch('shade.OpenStackCloud.get_network')
self.assertRaises(
OpenStackCloudException, self.cloud.create_server,
'server-name', {'id': 'image-id'}, {'id': 'flavor-id'},
wait=True)
@mock.patch('shade.OpenStackCloud.nova_client')
@mock.patch('shade.OpenStackCloud.get_network')
def test_create_server_network_with_no_nics(self, mock_get_network,
mock_nova):
"""
@ -294,8 +269,8 @@ class TestCreateServer(base.RequestsMockTestCase):
dict(id='image-id'), dict(id='flavor-id'), network='network-name')
mock_get_network.assert_called_once_with(name_or_id='network-name')
@patch('shade.OpenStackCloud.nova_client')
@patch('shade.OpenStackCloud.get_network')
@mock.patch('shade.OpenStackCloud.nova_client')
@mock.patch('shade.OpenStackCloud.get_network')
def test_create_server_network_with_empty_nics(self,
mock_get_network,
mock_nova):

View File

@ -19,7 +19,8 @@ test_rebuild_server
Tests for the `rebuild_server` command.
"""
from mock import patch, Mock
import mock
from shade import meta
from shade import OpenStackCloud
from shade.exc import (OpenStackCloudException, OpenStackCloudTimeout)
@ -29,20 +30,18 @@ from shade.tests.unit import base
class TestRebuildServer(base.TestCase):
def test_rebuild_server_rebuild_exception(self):
@mock.patch.object(OpenStackCloud, 'nova_client')
def test_rebuild_server_rebuild_exception(self, mock_nova):
"""
Test that an exception in the novaclient rebuild raises an exception in
rebuild_server.
"""
with patch("shade.OpenStackCloud"):
config = {
"servers.rebuild.side_effect": Exception("exception"),
}
OpenStackCloud.nova_client = Mock(**config)
self.assertRaises(
OpenStackCloudException, self.cloud.rebuild_server, "a", "b")
mock_nova.servers.rebuild.side_effect = Exception("exception")
self.assertRaises(
OpenStackCloudException, self.cloud.rebuild_server, "a", "b")
def test_rebuild_server_server_error(self):
@mock.patch.object(OpenStackCloud, 'nova_client')
def test_rebuild_server_server_error(self, mock_nova):
"""
Test that a server error while waiting for the server to rebuild
raises an exception in rebuild_server.
@ -52,108 +51,89 @@ class TestRebuildServer(base.TestCase):
fake_floating_ip = fakes.FakeFloatingIP('1234', 'ippool',
'1.1.1.1', '2.2.2.2',
'5678')
with patch("shade.OpenStackCloud"):
config = {
"servers.rebuild.return_value": rebuild_server,
"servers.list.return_value": [error_server],
"floating_ips.list.return_value": [fake_floating_ip]
}
OpenStackCloud.nova_client = Mock(**config)
self.assertRaises(
OpenStackCloudException,
self.cloud.rebuild_server, "1234", "b", wait=True)
mock_nova.servers.rebuild.return_value = rebuild_server
mock_nova.servers.list.return_value = [error_server]
mock_nova.floating_ips.list.return_value = [fake_floating_ip]
self.assertRaises(
OpenStackCloudException,
self.cloud.rebuild_server, "1234", "b", wait=True)
def test_rebuild_server_timeout(self):
@mock.patch.object(OpenStackCloud, 'nova_client')
def test_rebuild_server_timeout(self, mock_nova):
"""
Test that a timeout while waiting for the server to rebuild raises an
exception in rebuild_server.
"""
rebuild_server = fakes.FakeServer('1234', '', 'REBUILD')
with patch("shade.OpenStackCloud"):
config = {
"servers.rebuild.return_value": rebuild_server,
"servers.list.return_value": [rebuild_server],
}
OpenStackCloud.nova_client = Mock(**config)
self.assertRaises(
OpenStackCloudTimeout,
self.cloud.rebuild_server, "a", "b", wait=True, timeout=0.001)
mock_nova.servers.rebuild.return_value = rebuild_server
mock_nova.servers.list.return_value = [rebuild_server]
self.assertRaises(
OpenStackCloudTimeout,
self.cloud.rebuild_server, "a", "b", wait=True, timeout=0.001)
def test_rebuild_server_no_wait(self):
@mock.patch.object(OpenStackCloud, 'nova_client')
def test_rebuild_server_no_wait(self, mock_nova):
"""
Test that rebuild_server with no wait and no exception in the
novaclient rebuild call returns the server instance.
"""
with patch("shade.OpenStackCloud"):
rebuild_server = fakes.FakeServer('1234', '', 'REBUILD')
config = {
"servers.rebuild.return_value": rebuild_server
}
OpenStackCloud.nova_client = Mock(**config)
self.assertEqual(meta.obj_to_dict(rebuild_server),
self.cloud.rebuild_server("a", "b"))
rebuild_server = fakes.FakeServer('1234', '', 'REBUILD')
mock_nova.servers.rebuild.return_value = rebuild_server
self.assertEqual(meta.obj_to_dict(rebuild_server),
self.cloud.rebuild_server("a", "b"))
def test_rebuild_server_with_admin_pass_no_wait(self):
@mock.patch.object(OpenStackCloud, 'nova_client')
def test_rebuild_server_with_admin_pass_no_wait(self, mock_nova):
"""
Test that a server with an admin_pass passed returns the password
"""
with patch("shade.OpenStackCloud"):
rebuild_server = fakes.FakeServer('1234', '', 'REBUILD',
adminPass='ooBootheiX0edoh')
config = {
"servers.rebuild.return_value": rebuild_server,
}
OpenStackCloud.nova_client = Mock(**config)
self.assertEqual(
meta.obj_to_dict(rebuild_server),
self.cloud.rebuild_server(
'a', 'b', admin_pass='ooBootheiX0edoh'))
rebuild_server = fakes.FakeServer('1234', '', 'REBUILD',
adminPass='ooBootheiX0edoh')
mock_nova.servers.rebuild.return_value = rebuild_server
self.assertEqual(
meta.obj_to_dict(rebuild_server),
self.cloud.rebuild_server(
'a', 'b', admin_pass='ooBootheiX0edoh'))
def test_rebuild_server_with_admin_pass_wait(self):
@mock.patch.object(OpenStackCloud, 'nova_client')
def test_rebuild_server_with_admin_pass_wait(self, mock_nova):
"""
Test that a server with an admin_pass passed returns the password
"""
with patch("shade.OpenStackCloud"):
rebuild_server = fakes.FakeServer('1234', '', 'REBUILD',
adminPass='ooBootheiX0edoh')
active_server = fakes.FakeServer('1234', '', 'ACTIVE')
ret_active_server = fakes.FakeServer('1234', '', 'ACTIVE',
adminPass='ooBootheiX0edoh')
fake_floating_ip = fakes.FakeFloatingIP('1234', 'ippool',
'1.1.1.1', '2.2.2.2',
'5678')
config = {
"servers.rebuild.return_value": rebuild_server,
"servers.list.return_value": [active_server],
"floating_ips.list.return_value": [fake_floating_ip]
}
OpenStackCloud.nova_client = Mock(**config)
self.cloud.name = 'cloud-name'
self.assertEqual(
self.cloud._normalize_server(
meta.obj_to_dict(ret_active_server)),
self.cloud.rebuild_server(
"1234", "b", wait=True, admin_pass='ooBootheiX0edoh'))
rebuild_server = fakes.FakeServer('1234', '', 'REBUILD',
adminPass='ooBootheiX0edoh')
active_server = fakes.FakeServer('1234', '', 'ACTIVE')
ret_active_server = fakes.FakeServer('1234', '', 'ACTIVE',
adminPass='ooBootheiX0edoh')
fake_floating_ip = fakes.FakeFloatingIP('1234', 'ippool',
'1.1.1.1', '2.2.2.2',
'5678')
mock_nova.servers.rebuild.return_value = rebuild_server
mock_nova.servers.list.return_value = [active_server]
mock_nova.floating_ips.list.return_value = [fake_floating_ip]
self.cloud.name = 'cloud-name'
self.assertEqual(
self.cloud._normalize_server(
meta.obj_to_dict(ret_active_server)),
self.cloud.rebuild_server(
"1234", "b", wait=True, admin_pass='ooBootheiX0edoh'))
def test_rebuild_server_wait(self):
@mock.patch.object(OpenStackCloud, 'nova_client')
def test_rebuild_server_wait(self, mock_nova):
"""
Test that rebuild_server with a wait returns the server instance when
its status changes to "ACTIVE".
"""
with patch("shade.OpenStackCloud"):
rebuild_server = fakes.FakeServer('1234', '', 'REBUILD')
active_server = fakes.FakeServer('1234', '', 'ACTIVE')
fake_floating_ip = fakes.FakeFloatingIP('1234', 'ippool',
'1.1.1.1', '2.2.2.2',
'5678')
config = {
"servers.rebuild.return_value": rebuild_server,
"servers.list.return_value": [active_server],
"floating_ips.list.return_value": [fake_floating_ip]
}
OpenStackCloud.nova_client = Mock(**config)
self.cloud.name = 'cloud-name'
self.assertEqual(
self.cloud._normalize_server(
meta.obj_to_dict(active_server)),
self.cloud.rebuild_server("1234", "b", wait=True))
rebuild_server = fakes.FakeServer('1234', '', 'REBUILD')
active_server = fakes.FakeServer('1234', '', 'ACTIVE')
fake_floating_ip = fakes.FakeFloatingIP('1234', 'ippool',
'1.1.1.1', '2.2.2.2',
'5678')
mock_nova.servers.rebuild.return_value = rebuild_server
mock_nova.servers.list.return_value = [active_server]
mock_nova.floating_ips.list.return_value = [fake_floating_ip]
self.cloud.name = 'cloud-name'
self.assertEqual(
self.cloud._normalize_server(
meta.obj_to_dict(active_server)),
self.cloud.rebuild_server("1234", "b", wait=True))

View File

@ -17,7 +17,8 @@ test_server_delete_metadata
Tests for the `delete_server_metadata` command.
"""
from mock import patch, Mock
import mock
from shade import OpenStackCloud
from shade.exc import OpenStackCloudException
from shade.tests.unit import base
@ -25,33 +26,26 @@ from shade.tests.unit import base
class TestServerDeleteMetadata(base.TestCase):
def test_server_delete_metadata_with_delete_meta_exception(self):
@mock.patch.object(OpenStackCloud, 'nova_client')
def test_server_delete_metadata_with_exception(self, mock_nova):
"""
Test that a generic exception in the novaclient delete_meta raises
an exception in delete_server_metadata.
"""
with patch("shade.OpenStackCloud"):
config = {
"servers.delete_meta.side_effect": Exception("exception"),
}
OpenStackCloud.nova_client = Mock(**config)
mock_nova.servers.delete_meta.side_effect = Exception("exception")
self.assertRaises(
OpenStackCloudException, self.cloud.delete_server_metadata,
{'id': 'server-id'}, ['key'])
self.assertRaises(
OpenStackCloudException, self.cloud.delete_server_metadata,
{'id': 'server-id'}, ['key'])
def test_server_delete_metadata_with_exception_reraise(self):
@mock.patch.object(OpenStackCloud, 'nova_client')
def test_server_delete_metadata_with_exception_reraise(self, mock_nova):
"""
Test that an OpenStackCloudException exception gets re-raised
in delete_server_metadata.
"""
with patch("shade.OpenStackCloud"):
config = {
"servers.delete_meta.side_effect":
OpenStackCloudException("exception"),
}
OpenStackCloud.nova_client = Mock(**config)
mock_nova.servers.delete_meta.side_effect = OpenStackCloudException("")
self.assertRaises(
OpenStackCloudException, self.cloud.delete_server_metadata,
'server-id', ['key'])
self.assertRaises(
OpenStackCloudException, self.cloud.delete_server_metadata,
'server-id', ['key'])

View File

@ -17,7 +17,8 @@ test_server_set_metadata
Tests for the `set_server_metadata` command.
"""
from mock import patch, Mock
import mock
from shade import OpenStackCloud
from shade.exc import OpenStackCloudException
from shade.tests.unit import base
@ -25,33 +26,26 @@ from shade.tests.unit import base
class TestServerSetMetadata(base.TestCase):
def test_server_set_metadata_with_set_meta_exception(self):
@mock.patch.object(OpenStackCloud, 'nova_client')
def test_server_set_metadata_with_set_meta_exception(self, mock_nova):
"""
Test that a generic exception in the novaclient set_meta raises
an exception in set_server_metadata.
"""
with patch("shade.OpenStackCloud"):
config = {
"servers.set_meta.side_effect": Exception("exception"),
}
OpenStackCloud.nova_client = Mock(**config)
mock_nova.servers.set_meta.side_effect = Exception("exception")
self.assertRaises(
OpenStackCloudException, self.cloud.set_server_metadata,
{'id': 'server-id'}, {'meta': 'data'})
self.assertRaises(
OpenStackCloudException, self.cloud.set_server_metadata,
{'id': 'server-id'}, {'meta': 'data'})
def test_server_set_metadata_with_exception_reraise(self):
@mock.patch.object(OpenStackCloud, 'nova_client')
def test_server_set_metadata_with_exception_reraise(self, mock_nova):
"""
Test that an OpenStackCloudException exception gets re-raised
in set_server_metadata.
"""
with patch("shade.OpenStackCloud"):
config = {
"servers.set_meta.side_effect":
OpenStackCloudException("exception"),
}
OpenStackCloud.nova_client = Mock(**config)
mock_nova.servers.set_meta.side_effect = OpenStackCloudException("")
self.assertRaises(
OpenStackCloudException, self.cloud.set_server_metadata,
'server-id', {'meta': 'data'})
self.assertRaises(
OpenStackCloudException, self.cloud.set_server_metadata,
'server-id', {'meta': 'data'})

View File

@ -17,7 +17,8 @@ test_update_server
Tests for the `update_server` command.
"""
from mock import patch, Mock
import mock
from shade import OpenStackCloud
from shade.exc import OpenStackCloudException
from shade.tests import fakes
@ -26,38 +27,32 @@ from shade.tests.unit import base
class TestUpdateServer(base.TestCase):
def test_update_server_with_update_exception(self):
@mock.patch.object(OpenStackCloud, 'nova_client')
def test_update_server_with_update_exception(self, mock_nova):
"""
Test that an exception in the novaclient update raises an exception in
update_server.
"""
with patch("shade.OpenStackCloud"):
config = {
"servers.update.side_effect": Exception("exception"),
}
OpenStackCloud.nova_client = Mock(**config)
self.assertRaises(
OpenStackCloudException, self.cloud.update_server,
'server-name')
mock_nova.servers.update.side_effect = Exception("exception")
self.assertRaises(
OpenStackCloudException, self.cloud.update_server,
'server-name')
def test_update_server_name(self):
@mock.patch.object(OpenStackCloud, 'nova_client')
def test_update_server_name(self, mock_nova):
"""
Test that update_server updates the name without raising any exception
"""
with patch("shade.OpenStackCloud"):
fake_server = fakes.FakeServer('1234', 'server-name', 'ACTIVE')
fake_update_server = fakes.FakeServer('1234', 'server-name2',
'ACTIVE')
fake_floating_ip = fakes.FakeFloatingIP('1234', 'ippool',
'1.1.1.1', '2.2.2.2',
'5678')
config = {
"servers.list.return_value": [fake_server],
"servers.update.return_value": fake_update_server,
"floating_ips.list.return_value": [fake_floating_ip]
}
OpenStackCloud.nova_client = Mock(**config)
self.assertEqual(
'server-name2',
self.cloud.update_server(
'server-name', name='server-name2')['name'])
fake_server = fakes.FakeServer('1234', 'server-name', 'ACTIVE')
fake_update_server = fakes.FakeServer('1234', 'server-name2',
'ACTIVE')
fake_floating_ip = fakes.FakeFloatingIP('1234', 'ippool',
'1.1.1.1', '2.2.2.2',
'5678')
mock_nova.servers.list.return_value = [fake_server]
mock_nova.servers.update.return_value = fake_update_server
mock_nova.floating_ips.list.return_value = [fake_floating_ip]
self.assertEqual(
'server-name2',
self.cloud.update_server(
'server-name', name='server-name2')['name'])