Convert list servers tests to requests_mock
Also, found a few others that had been missed before. Change-Id: I9dfbabd2b5318a59b91edf4d8a62ccc0ccb9baa0
This commit is contained in:
parent
c5245648ed
commit
83c8bf5a34
|
@ -178,18 +178,23 @@ class TestMemoryCache(base.RequestsMockTestCase):
|
|||
self.cloud.list_projects())
|
||||
self.assert_calls()
|
||||
|
||||
@mock.patch('shade.OpenStackCloud.nova_client')
|
||||
def test_list_servers_no_herd(self, nova_mock):
|
||||
def test_list_servers_no_herd(self):
|
||||
self.cloud._SERVER_AGE = 2
|
||||
fake_server = fakes.FakeServer('1234', '', 'ACTIVE')
|
||||
nova_mock.servers.list.return_value = [fake_server]
|
||||
fake_server = fakes.make_fake_server('1234', 'name')
|
||||
self.register_uris([
|
||||
dict(method='GET',
|
||||
uri=self.get_mock_url(
|
||||
'compute', 'public', append=['servers', 'detail']),
|
||||
json={'servers': [fake_server]}),
|
||||
])
|
||||
with concurrent.futures.ThreadPoolExecutor(16) as pool:
|
||||
for i in range(16):
|
||||
pool.submit(lambda: self.cloud.list_servers(bare=True))
|
||||
# It's possible to race-condition 16 threads all in the
|
||||
# single initial lock without a tiny sleep
|
||||
time.sleep(0.001)
|
||||
self.assertEqual(1, nova_mock.servers.list.call_count)
|
||||
|
||||
self.assert_calls()
|
||||
|
||||
def test_list_volumes(self):
|
||||
fake_volume = fakes.FakeVolume('volume1', 'available',
|
||||
|
|
|
@ -25,6 +25,9 @@ class TestImageSnapshot(base.RequestsMockTestCase):
|
|||
super(TestImageSnapshot, self).setUp()
|
||||
self.server_id = str(uuid.uuid4())
|
||||
self.image_id = str(uuid.uuid4())
|
||||
self.server_name = self.getUniqueString('name')
|
||||
self.fake_server = fakes.make_fake_server(
|
||||
self.server_id, self.server_name)
|
||||
|
||||
def test_create_image_snapshot_wait_until_active_never_active(self):
|
||||
snapshot_name = 'test-snapshot'
|
||||
|
@ -97,17 +100,3 @@ class TestImageSnapshot(base.RequestsMockTestCase):
|
|||
self.assertEqual(image['id'], self.image_id)
|
||||
|
||||
self.assert_calls()
|
||||
|
||||
def test_create_image_snapshot_bad_name_exception(self):
|
||||
self.register_uris([
|
||||
dict(
|
||||
method='POST',
|
||||
uri='{endpoint}/servers/{server_id}/action'.format(
|
||||
endpoint=fakes.COMPUTE_ENDPOINT,
|
||||
server_id=self.server_id),
|
||||
json=dict(servers=[])),
|
||||
])
|
||||
self.assertRaises(
|
||||
exc.OpenStackCloudException,
|
||||
self.cloud.create_image_snapshot,
|
||||
'test-snapshot', self.server_id)
|
||||
|
|
|
@ -17,35 +17,59 @@ test_server_delete_metadata
|
|||
Tests for the `delete_server_metadata` command.
|
||||
"""
|
||||
|
||||
import mock
|
||||
import uuid
|
||||
|
||||
from shade import OpenStackCloud
|
||||
from shade.exc import OpenStackCloudException
|
||||
from shade.exc import OpenStackCloudURINotFound
|
||||
from shade.tests import fakes
|
||||
from shade.tests.unit import base
|
||||
|
||||
|
||||
class TestServerDeleteMetadata(base.TestCase):
|
||||
class TestServerDeleteMetadata(base.RequestsMockTestCase):
|
||||
|
||||
@mock.patch.object(OpenStackCloud, 'nova_client')
|
||||
def test_server_delete_metadata_with_exception(self, mock_nova):
|
||||
def setUp(self):
|
||||
super(TestServerDeleteMetadata, self).setUp()
|
||||
self.server_id = str(uuid.uuid4())
|
||||
self.server_name = self.getUniqueString('name')
|
||||
self.fake_server = fakes.make_fake_server(
|
||||
self.server_id, self.server_name)
|
||||
|
||||
def test_server_delete_metadata_with_exception(self):
|
||||
"""
|
||||
Test that a generic exception in the novaclient delete_meta raises
|
||||
an exception in delete_server_metadata.
|
||||
Test that a missing metadata throws an exception.
|
||||
"""
|
||||
mock_nova.servers.delete_meta.side_effect = Exception("exception")
|
||||
self.register_uris([
|
||||
dict(method='GET',
|
||||
uri=self.get_mock_url(
|
||||
'compute', 'public', append=['servers', 'detail']),
|
||||
json={'servers': [self.fake_server]}),
|
||||
dict(method='DELETE',
|
||||
uri=self.get_mock_url(
|
||||
'compute', 'public',
|
||||
append=['servers', self.fake_server['id'],
|
||||
'metadata', 'key']),
|
||||
status_code=404),
|
||||
])
|
||||
|
||||
self.assertRaises(
|
||||
OpenStackCloudException, self.cloud.delete_server_metadata,
|
||||
{'id': 'server-id'}, ['key'])
|
||||
OpenStackCloudURINotFound, self.cloud.delete_server_metadata,
|
||||
self.server_name, ['key'])
|
||||
|
||||
@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.
|
||||
"""
|
||||
mock_nova.servers.delete_meta.side_effect = OpenStackCloudException("")
|
||||
self.assert_calls()
|
||||
|
||||
self.assertRaises(
|
||||
OpenStackCloudException, self.cloud.delete_server_metadata,
|
||||
'server-id', ['key'])
|
||||
def test_server_delete_metadata(self):
|
||||
self.register_uris([
|
||||
dict(method='GET',
|
||||
uri=self.get_mock_url(
|
||||
'compute', 'public', append=['servers', 'detail']),
|
||||
json={'servers': [self.fake_server]}),
|
||||
dict(method='DELETE',
|
||||
uri=self.get_mock_url(
|
||||
'compute', 'public',
|
||||
append=['servers', self.fake_server['id'],
|
||||
'metadata', 'key']),
|
||||
status_code=200),
|
||||
])
|
||||
|
||||
self.cloud.delete_server_metadata(self.server_id, ['key'])
|
||||
|
||||
self.assert_calls()
|
||||
|
|
|
@ -17,35 +17,62 @@ test_server_set_metadata
|
|||
Tests for the `set_server_metadata` command.
|
||||
"""
|
||||
|
||||
import mock
|
||||
import uuid
|
||||
|
||||
from shade import OpenStackCloud
|
||||
from shade.exc import OpenStackCloudException
|
||||
from shade.exc import OpenStackCloudBadRequest
|
||||
from shade.tests import fakes
|
||||
from shade.tests.unit import base
|
||||
|
||||
|
||||
class TestServerSetMetadata(base.TestCase):
|
||||
class TestServerSetMetadata(base.RequestsMockTestCase):
|
||||
|
||||
@mock.patch.object(OpenStackCloud, 'nova_client')
|
||||
def test_server_set_metadata_with_set_meta_exception(self, mock_nova):
|
||||
def setUp(self):
|
||||
super(TestServerSetMetadata, self).setUp()
|
||||
self.server_id = str(uuid.uuid4())
|
||||
self.server_name = self.getUniqueString('name')
|
||||
self.fake_server = fakes.make_fake_server(
|
||||
self.server_id, self.server_name)
|
||||
|
||||
def test_server_set_metadata_with_exception(self):
|
||||
"""
|
||||
Test that a generic exception in the novaclient set_meta raises
|
||||
an exception in set_server_metadata.
|
||||
Test that a generic exception in the novaclient delete_meta raises
|
||||
an exception in delete_server_metadata.
|
||||
"""
|
||||
mock_nova.servers.set_meta.side_effect = Exception("exception")
|
||||
self.register_uris([
|
||||
dict(method='GET',
|
||||
uri=self.get_mock_url(
|
||||
'compute', 'public', append=['servers', 'detail']),
|
||||
json={'servers': [self.fake_server]}),
|
||||
dict(method='POST',
|
||||
uri=self.get_mock_url(
|
||||
'compute', 'public',
|
||||
append=['servers', self.fake_server['id'],
|
||||
'metadata']),
|
||||
validate=dict(json={'metadata': {'meta': 'data'}}),
|
||||
json={},
|
||||
status_code=400),
|
||||
])
|
||||
|
||||
self.assertRaises(
|
||||
OpenStackCloudException, self.cloud.set_server_metadata,
|
||||
{'id': 'server-id'}, {'meta': 'data'})
|
||||
OpenStackCloudBadRequest, self.cloud.set_server_metadata,
|
||||
self.server_name, {'meta': 'data'})
|
||||
|
||||
@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.
|
||||
"""
|
||||
mock_nova.servers.set_meta.side_effect = OpenStackCloudException("")
|
||||
self.assert_calls()
|
||||
|
||||
self.assertRaises(
|
||||
OpenStackCloudException, self.cloud.set_server_metadata,
|
||||
'server-id', {'meta': 'data'})
|
||||
def test_server_set_metadata(self):
|
||||
self.register_uris([
|
||||
dict(method='GET',
|
||||
uri=self.get_mock_url(
|
||||
'compute', 'public', append=['servers', 'detail']),
|
||||
json={'servers': [self.fake_server]}),
|
||||
dict(method='POST',
|
||||
uri=self.get_mock_url(
|
||||
'compute', 'public',
|
||||
append=['servers', self.fake_server['id'], 'metadata']),
|
||||
validate=dict(json={'metadata': {'meta': 'data'}}),
|
||||
status_code=200),
|
||||
])
|
||||
|
||||
self.cloud.set_server_metadata(self.server_id, {'meta': 'data'})
|
||||
|
||||
self.assert_calls()
|
||||
|
|
|
@ -11,7 +11,7 @@
|
|||
# under the License.
|
||||
|
||||
import mock
|
||||
import munch
|
||||
import uuid
|
||||
|
||||
import testtools
|
||||
|
||||
|
@ -68,32 +68,49 @@ class TestShade(base.RequestsMockTestCase):
|
|||
r = self.cloud.get_image('doesNotExist')
|
||||
self.assertIsNone(r)
|
||||
|
||||
@mock.patch.object(shade.OpenStackCloud, '_expand_server')
|
||||
@mock.patch.object(shade.OpenStackCloud, 'list_servers')
|
||||
def test_get_server(self, mock_list, mock_expand):
|
||||
server1 = dict(id='123', name='mickey')
|
||||
server2 = dict(id='345', name='mouse')
|
||||
def test_get_server(self):
|
||||
server1 = fakes.make_fake_server('123', 'mickey')
|
||||
server2 = fakes.make_fake_server('345', 'mouse')
|
||||
|
||||
self.register_uris([
|
||||
dict(method='GET',
|
||||
uri=self.get_mock_url(
|
||||
'compute', 'public', append=['servers', 'detail']),
|
||||
json={'servers': [server1, server2]}),
|
||||
])
|
||||
|
||||
def expand_server(server, detailed, bare):
|
||||
return server
|
||||
mock_expand.side_effect = expand_server
|
||||
mock_list.return_value = [server1, server2]
|
||||
r = self.cloud.get_server('mickey')
|
||||
self.assertIsNotNone(r)
|
||||
self.assertDictEqual(server1, r)
|
||||
self.assertEqual(server1['name'], r['name'])
|
||||
|
||||
self.assert_calls()
|
||||
|
||||
def test_get_server_not_found(self):
|
||||
self.register_uris([
|
||||
dict(method='GET',
|
||||
uri=self.get_mock_url(
|
||||
'compute', 'public', append=['servers', 'detail']),
|
||||
json={'servers': []}),
|
||||
])
|
||||
|
||||
@mock.patch.object(shade.OpenStackCloud, 'search_servers')
|
||||
def test_get_server_not_found(self, mock_search):
|
||||
mock_search.return_value = []
|
||||
r = self.cloud.get_server('doesNotExist')
|
||||
self.assertIsNone(r)
|
||||
|
||||
@mock.patch.object(shade.OpenStackCloud, 'nova_client')
|
||||
def test_list_servers_exception(self, mock_client):
|
||||
mock_client.servers.list.side_effect = Exception()
|
||||
self.assert_calls()
|
||||
|
||||
def test_list_servers_exception(self):
|
||||
self.register_uris([
|
||||
dict(method='GET',
|
||||
uri=self.get_mock_url(
|
||||
'compute', 'public', append=['servers', 'detail']),
|
||||
status_code=400)
|
||||
])
|
||||
|
||||
self.assertRaises(exc.OpenStackCloudException,
|
||||
self.cloud.list_servers)
|
||||
|
||||
self.assert_calls()
|
||||
|
||||
def test__neutron_exceptions_resource_not_found(self):
|
||||
self.register_uris([
|
||||
dict(method='GET',
|
||||
|
@ -116,64 +133,39 @@ class TestShade(base.RequestsMockTestCase):
|
|||
self.cloud.list_networks)
|
||||
self.assert_calls()
|
||||
|
||||
@mock.patch.object(shade._tasks.ServerList, 'main')
|
||||
@mock.patch('shade.meta.add_server_interfaces')
|
||||
def test_list_servers(self, mock_add_srv_int, mock_serverlist):
|
||||
'''This test verifies that calling list_servers results in a call
|
||||
to the ServerList task.'''
|
||||
server_obj = munch.Munch({'name': 'testserver',
|
||||
'id': '1',
|
||||
'flavor': {},
|
||||
'addresses': {},
|
||||
'accessIPv4': '',
|
||||
'accessIPv6': '',
|
||||
'image': ''})
|
||||
mock_serverlist.return_value = [server_obj]
|
||||
mock_add_srv_int.side_effect = [server_obj]
|
||||
def test_list_servers(self):
|
||||
server_id = str(uuid.uuid4())
|
||||
server_name = self.getUniqueString('name')
|
||||
fake_server = fakes.make_fake_server(server_id, server_name)
|
||||
self.register_uris([
|
||||
dict(method='GET',
|
||||
uri=self.get_mock_url(
|
||||
'compute', 'public', append=['servers', 'detail']),
|
||||
json={'servers': [fake_server]}),
|
||||
])
|
||||
|
||||
r = self.cloud.list_servers()
|
||||
|
||||
self.assertEqual(1, len(r))
|
||||
self.assertEqual(1, mock_add_srv_int.call_count)
|
||||
self.assertEqual('testserver', r[0]['name'])
|
||||
self.assertEqual(server_name, r[0]['name'])
|
||||
|
||||
@mock.patch.object(shade._tasks.ServerList, 'main')
|
||||
@mock.patch('shade.meta.get_hostvars_from_server')
|
||||
def test_list_servers_detailed(self,
|
||||
mock_get_hostvars_from_server,
|
||||
mock_serverlist):
|
||||
self.assert_calls()
|
||||
|
||||
def test_list_servers_all_projects(self):
|
||||
'''This test verifies that when list_servers is called with
|
||||
`detailed=True` that it calls `get_hostvars_from_server` for each
|
||||
server in the list.'''
|
||||
mock_serverlist.return_value = [
|
||||
fakes.FakeServer('server1', '', 'ACTIVE'),
|
||||
fakes.FakeServer('server2', '', 'ACTIVE'),
|
||||
]
|
||||
mock_get_hostvars_from_server.side_effect = [
|
||||
{'name': 'server1', 'id': '1'},
|
||||
{'name': 'server2', 'id': '2'},
|
||||
]
|
||||
|
||||
r = self.cloud.list_servers(detailed=True)
|
||||
|
||||
self.assertEqual(2, len(r))
|
||||
self.assertEqual(len(r), mock_get_hostvars_from_server.call_count)
|
||||
self.assertEqual('server1', r[0]['name'])
|
||||
self.assertEqual('server2', r[1]['name'])
|
||||
|
||||
@mock.patch.object(shade.OpenStackCloud, 'nova_client')
|
||||
def test_list_servers_all_projects(self, mock_nova_client):
|
||||
'''This test verifies that when list_servers is called with
|
||||
`all_projects=True` that it passes `all_tenants=1` to novaclient.'''
|
||||
mock_nova_client.servers.list.return_value = [
|
||||
fakes.FakeServer('server1', '', 'ACTIVE'),
|
||||
fakes.FakeServer('server2', '', 'ACTIVE'),
|
||||
]
|
||||
`all_projects=True` that it passes `all_tenants=True` to nova.'''
|
||||
self.register_uris([
|
||||
dict(method='GET',
|
||||
uri=self.get_mock_url(
|
||||
'compute', 'public', append=['servers', 'detail'],
|
||||
qs_elements=['all_tenants=True']),
|
||||
complete_qs=True,
|
||||
json={'servers': []}),
|
||||
])
|
||||
|
||||
self.cloud.list_servers(all_projects=True)
|
||||
|
||||
mock_nova_client.servers.list.assert_called_with(
|
||||
search_opts={'all_tenants': True})
|
||||
self.assert_calls()
|
||||
|
||||
def test_iterate_timeout_bad_wait(self):
|
||||
with testtools.ExpectedException(
|
||||
|
|
Loading…
Reference in New Issue