Merge "Update functional tests for fixtures 3"
This commit is contained in:
@@ -38,11 +38,6 @@ class ServerActionsSampleJsonTest(api_sample_base.ApiSampleTestBaseV21):
|
||||
'contrib.instance_actions.Instance_actions')
|
||||
return f
|
||||
|
||||
def _fake_get(self, context, instance_uuid, expected_attrs=None,
|
||||
want_objects=True):
|
||||
return fake_instance.fake_instance_obj(
|
||||
None, **{'uuid': instance_uuid})
|
||||
|
||||
def setUp(self):
|
||||
super(ServerActionsSampleJsonTest, self).setUp()
|
||||
self.api.microversion = self.microversion
|
||||
@@ -50,6 +45,11 @@ class ServerActionsSampleJsonTest(api_sample_base.ApiSampleTestBaseV21):
|
||||
self.events = fake_server_actions.FAKE_EVENTS
|
||||
self.instance = test_utils.get_test_instance(obj=True)
|
||||
|
||||
def _fake_get(stub_self, context, instance_uuid, expected_attrs=None,
|
||||
want_objects=True):
|
||||
return fake_instance.fake_instance_obj(
|
||||
None, **{'uuid': instance_uuid})
|
||||
|
||||
def fake_instance_action_get_by_request_id(context, uuid, request_id):
|
||||
return copy.deepcopy(self.actions[uuid][request_id])
|
||||
|
||||
@@ -70,7 +70,7 @@ class ServerActionsSampleJsonTest(api_sample_base.ApiSampleTestBaseV21):
|
||||
fake_instance_action_events_get)
|
||||
self.stub_out('nova.db.instance_get_by_uuid',
|
||||
fake_instance_get_by_uuid)
|
||||
self.stub_out('nova.compute.api.API.get', self._fake_get)
|
||||
self.stub_out('nova.compute.api.API.get', _fake_get)
|
||||
|
||||
def test_instance_action_get(self):
|
||||
fake_uuid = fake_server_actions.FAKE_UUID
|
||||
@@ -104,9 +104,3 @@ class ServerActionsSampleJsonTest(api_sample_base.ApiSampleTestBaseV21):
|
||||
class ServerActionsV221SampleJsonTest(ServerActionsSampleJsonTest):
|
||||
microversion = '2.21'
|
||||
scenarios = [('v2_21', {'api_major_version': 'v2.1'})]
|
||||
|
||||
def _fake_get(self, context, instance_uuid, expected_attrs=None,
|
||||
want_objects=True):
|
||||
self.assertEqual('yes', context.read_deleted)
|
||||
return fake_instance.fake_instance_obj(
|
||||
None, **{'uuid': instance_uuid})
|
||||
|
@@ -29,6 +29,48 @@ INSTANCE_UUID_1 = "8600d31b-d1a1-4632-b2ff-45c2be1a70ff"
|
||||
INSTANCE_UUID_2 = "9128d044-7b61-403e-b766-7547076ff6c1"
|
||||
|
||||
|
||||
def _stub_migrations(stub_self, context, filters):
|
||||
fake_migrations = [
|
||||
{
|
||||
'id': 1234,
|
||||
'source_node': 'node1',
|
||||
'dest_node': 'node2',
|
||||
'source_compute': 'compute1',
|
||||
'dest_compute': 'compute2',
|
||||
'dest_host': '1.2.3.4',
|
||||
'status': 'Done',
|
||||
'instance_uuid': 'instance_id_123',
|
||||
'old_instance_type_id': 1,
|
||||
'new_instance_type_id': 2,
|
||||
'migration_type': 'resize',
|
||||
'hidden': False,
|
||||
'created_at': datetime.datetime(2012, 10, 29, 13, 42, 2),
|
||||
'updated_at': datetime.datetime(2012, 10, 29, 13, 42, 2),
|
||||
'deleted_at': None,
|
||||
'deleted': False
|
||||
},
|
||||
{
|
||||
'id': 5678,
|
||||
'source_node': 'node10',
|
||||
'dest_node': 'node20',
|
||||
'source_compute': 'compute10',
|
||||
'dest_compute': 'compute20',
|
||||
'dest_host': '5.6.7.8',
|
||||
'status': 'Done',
|
||||
'instance_uuid': 'instance_id_456',
|
||||
'old_instance_type_id': 5,
|
||||
'new_instance_type_id': 6,
|
||||
'migration_type': 'resize',
|
||||
'hidden': False,
|
||||
'created_at': datetime.datetime(2013, 10, 22, 13, 42, 2),
|
||||
'updated_at': datetime.datetime(2013, 10, 22, 13, 42, 2),
|
||||
'deleted_at': None,
|
||||
'deleted': False
|
||||
}
|
||||
]
|
||||
return fake_migrations
|
||||
|
||||
|
||||
class MigrationsSamplesJsonTest(api_sample_base.ApiSampleTestBaseV21):
|
||||
ADMIN_API = True
|
||||
extension_name = "os-migrations"
|
||||
@@ -40,51 +82,10 @@ class MigrationsSamplesJsonTest(api_sample_base.ApiSampleTestBaseV21):
|
||||
'nova.api.openstack.compute.contrib.migrations.Migrations')
|
||||
return f
|
||||
|
||||
def _stub_migrations(self, context, filters):
|
||||
fake_migrations = [
|
||||
{
|
||||
'id': 1234,
|
||||
'source_node': 'node1',
|
||||
'dest_node': 'node2',
|
||||
'source_compute': 'compute1',
|
||||
'dest_compute': 'compute2',
|
||||
'dest_host': '1.2.3.4',
|
||||
'status': 'Done',
|
||||
'instance_uuid': 'instance_id_123',
|
||||
'old_instance_type_id': 1,
|
||||
'new_instance_type_id': 2,
|
||||
'migration_type': 'resize',
|
||||
'hidden': False,
|
||||
'created_at': datetime.datetime(2012, 10, 29, 13, 42, 2),
|
||||
'updated_at': datetime.datetime(2012, 10, 29, 13, 42, 2),
|
||||
'deleted_at': None,
|
||||
'deleted': False
|
||||
},
|
||||
{
|
||||
'id': 5678,
|
||||
'source_node': 'node10',
|
||||
'dest_node': 'node20',
|
||||
'source_compute': 'compute10',
|
||||
'dest_compute': 'compute20',
|
||||
'dest_host': '5.6.7.8',
|
||||
'status': 'Done',
|
||||
'instance_uuid': 'instance_id_456',
|
||||
'old_instance_type_id': 5,
|
||||
'new_instance_type_id': 6,
|
||||
'migration_type': 'resize',
|
||||
'hidden': False,
|
||||
'created_at': datetime.datetime(2013, 10, 22, 13, 42, 2),
|
||||
'updated_at': datetime.datetime(2013, 10, 22, 13, 42, 2),
|
||||
'deleted_at': None,
|
||||
'deleted': False
|
||||
}
|
||||
]
|
||||
return fake_migrations
|
||||
|
||||
def setUp(self):
|
||||
super(MigrationsSamplesJsonTest, self).setUp()
|
||||
self.stub_out('nova.compute.api.API.get_migrations',
|
||||
self._stub_migrations)
|
||||
_stub_migrations)
|
||||
|
||||
def test_get_migrations(self):
|
||||
response = self._do_get('os-migrations')
|
||||
|
@@ -20,6 +20,25 @@ from nova.tests.unit.api.openstack.compute import test_networks
|
||||
CONF = nova.conf.CONF
|
||||
|
||||
|
||||
def _fixtures_passthrough(method_name):
|
||||
# This compensates for how fixtures 3.x handles the signatures of
|
||||
# MonkeyPatched functions vs fixtures < 3.x. In fixtures 3 if a bound
|
||||
# method is patched in for a bound method then both objects will be passed
|
||||
# in when called. This means the patch method should have the signature of
|
||||
# (self, targetself, *args, **kwargs). However that will not work for
|
||||
# fixtures < 3. This method captures self from the call point and discards
|
||||
# it since it's not needed.
|
||||
fake_network_api = test_networks.FakeNetworkAPI()
|
||||
method = getattr(fake_network_api, method_name)
|
||||
|
||||
def call(self, *args, **kwargs):
|
||||
# self is the nova.network.api.API object that has been patched
|
||||
# method is bound to FakeNetworkAPI so that will be passed in as self
|
||||
return method(*args, **kwargs)
|
||||
|
||||
return call
|
||||
|
||||
|
||||
class NetworksJsonTests(api_sample_base.ApiSampleTestBaseV21):
|
||||
ADMIN_API = True
|
||||
extension_name = "os-networks"
|
||||
@@ -35,15 +54,18 @@ class NetworksJsonTests(api_sample_base.ApiSampleTestBaseV21):
|
||||
|
||||
def setUp(self):
|
||||
super(NetworksJsonTests, self).setUp()
|
||||
fake_network_api = test_networks.FakeNetworkAPI()
|
||||
self.stub_out("nova.network.api.API.get_all", fake_network_api.get_all)
|
||||
self.stub_out("nova.network.api.API.get", fake_network_api.get)
|
||||
self.stub_out("nova.network.api.API.get_all",
|
||||
_fixtures_passthrough('get_all'))
|
||||
self.stub_out("nova.network.api.API.get",
|
||||
_fixtures_passthrough('get'))
|
||||
self.stub_out("nova.network.api.API.associate",
|
||||
fake_network_api.associate)
|
||||
self.stub_out("nova.network.api.API.delete", fake_network_api.delete)
|
||||
self.stub_out("nova.network.api.API.create", fake_network_api.create)
|
||||
_fixtures_passthrough('associate'))
|
||||
self.stub_out("nova.network.api.API.delete",
|
||||
_fixtures_passthrough('delete'))
|
||||
self.stub_out("nova.network.api.API.create",
|
||||
_fixtures_passthrough('create'))
|
||||
self.stub_out("nova.network.api.API.add_network_to_project",
|
||||
fake_network_api.add_network_to_project)
|
||||
_fixtures_passthrough('add_network_to_project'))
|
||||
|
||||
def test_network_list(self):
|
||||
response = self._do_get('os-networks')
|
||||
|
@@ -89,6 +89,56 @@ class SnapshotsSampleJsonTests(api_sample_base.ApiSampleTestBaseV21):
|
||||
self._verify_response('snapshots-show-resp', subs, response, 200)
|
||||
|
||||
|
||||
def _get_volume_id():
|
||||
return 'a26887c6-c47b-4654-abb5-dfadf7d3f803'
|
||||
|
||||
|
||||
def _stub_volume(id, displayname="Volume Name",
|
||||
displaydesc="Volume Description", size=100):
|
||||
volume = {
|
||||
'id': id,
|
||||
'size': size,
|
||||
'availability_zone': 'zone1:host1',
|
||||
'status': 'in-use',
|
||||
'attach_status': 'attached',
|
||||
'name': 'vol name',
|
||||
'display_name': displayname,
|
||||
'display_description': displaydesc,
|
||||
'created_at': datetime.datetime(2008, 12, 1, 11, 1, 55),
|
||||
'snapshot_id': None,
|
||||
'volume_type_id': 'fakevoltype',
|
||||
'volume_metadata': [],
|
||||
'volume_type': {'name': 'Backup'},
|
||||
'multiattach': False,
|
||||
'attachments': {'3912f2b4-c5ba-4aec-9165-872876fe202e':
|
||||
{'mountpoint': '/',
|
||||
'attachment_id':
|
||||
'a26887c6-c47b-4654-abb5-dfadf7d3f803'
|
||||
}
|
||||
}
|
||||
}
|
||||
return volume
|
||||
|
||||
|
||||
def _stub_volume_get(stub_self, context, volume_id):
|
||||
return _stub_volume(volume_id)
|
||||
|
||||
|
||||
def _stub_volume_delete(stub_self, context, *args, **param):
|
||||
pass
|
||||
|
||||
|
||||
def _stub_volume_get_all(stub_self, context, search_opts=None):
|
||||
id = _get_volume_id()
|
||||
return [_stub_volume(id)]
|
||||
|
||||
|
||||
def _stub_volume_create(stub_self, context, size, name, description,
|
||||
snapshot, **param):
|
||||
id = _get_volume_id()
|
||||
return _stub_volume(id)
|
||||
|
||||
|
||||
class VolumesSampleJsonTest(test_servers.ServersSampleBase):
|
||||
extension_name = "os-volumes"
|
||||
|
||||
@@ -99,59 +149,15 @@ class VolumesSampleJsonTest(test_servers.ServersSampleBase):
|
||||
'nova.api.openstack.compute.contrib.volumes.Volumes')
|
||||
return f
|
||||
|
||||
def _get_volume_id(self):
|
||||
return 'a26887c6-c47b-4654-abb5-dfadf7d3f803'
|
||||
|
||||
def _stub_volume(self, id, displayname="Volume Name",
|
||||
displaydesc="Volume Description", size=100):
|
||||
volume = {
|
||||
'id': id,
|
||||
'size': size,
|
||||
'availability_zone': 'zone1:host1',
|
||||
'status': 'in-use',
|
||||
'attach_status': 'attached',
|
||||
'name': 'vol name',
|
||||
'display_name': displayname,
|
||||
'display_description': displaydesc,
|
||||
'created_at': datetime.datetime(2008, 12, 1, 11, 1, 55),
|
||||
'snapshot_id': None,
|
||||
'volume_type_id': 'fakevoltype',
|
||||
'volume_metadata': [],
|
||||
'volume_type': {'name': 'Backup'},
|
||||
'multiattach': False,
|
||||
'attachments': {'3912f2b4-c5ba-4aec-9165-872876fe202e':
|
||||
{'mountpoint': '/',
|
||||
'attachment_id':
|
||||
'a26887c6-c47b-4654-abb5-dfadf7d3f803'
|
||||
}
|
||||
}
|
||||
}
|
||||
return volume
|
||||
|
||||
def _stub_volume_get(self, context, volume_id):
|
||||
return self._stub_volume(volume_id)
|
||||
|
||||
def _stub_volume_delete(self, context, *args, **param):
|
||||
pass
|
||||
|
||||
def _stub_volume_get_all(self, context, search_opts=None):
|
||||
id = self._get_volume_id()
|
||||
return [self._stub_volume(id)]
|
||||
|
||||
def _stub_volume_create(self, context, size, name, description, snapshot,
|
||||
**param):
|
||||
id = self._get_volume_id()
|
||||
return self._stub_volume(id)
|
||||
|
||||
def setUp(self):
|
||||
super(VolumesSampleJsonTest, self).setUp()
|
||||
fakes.stub_out_networking(self)
|
||||
|
||||
self.stub_out("nova.volume.cinder.API.delete",
|
||||
self._stub_volume_delete)
|
||||
self.stub_out("nova.volume.cinder.API.get", self._stub_volume_get)
|
||||
_stub_volume_delete)
|
||||
self.stub_out("nova.volume.cinder.API.get", _stub_volume_get)
|
||||
self.stub_out("nova.volume.cinder.API.get_all",
|
||||
self._stub_volume_get_all)
|
||||
_stub_volume_get_all)
|
||||
|
||||
def _post_volume(self):
|
||||
subs_req = {
|
||||
@@ -160,7 +166,7 @@ class VolumesSampleJsonTest(test_servers.ServersSampleBase):
|
||||
}
|
||||
|
||||
self.stub_out("nova.volume.cinder.API.create",
|
||||
self._stub_volume_create)
|
||||
_stub_volume_create)
|
||||
response = self._do_post('os-volumes', 'os-volumes-post-req',
|
||||
subs_req)
|
||||
self._verify_response('os-volumes-post-resp', subs_req, response, 200)
|
||||
@@ -170,7 +176,7 @@ class VolumesSampleJsonTest(test_servers.ServersSampleBase):
|
||||
'volume_name': "Volume Name",
|
||||
'volume_desc': "Volume Description",
|
||||
}
|
||||
vol_id = self._get_volume_id()
|
||||
vol_id = _get_volume_id()
|
||||
response = self._do_get('os-volumes/%s' % vol_id)
|
||||
self._verify_response('os-volumes-get-resp', subs, response, 200)
|
||||
|
||||
@@ -197,7 +203,7 @@ class VolumesSampleJsonTest(test_servers.ServersSampleBase):
|
||||
|
||||
def test_volumes_delete(self):
|
||||
self._post_volume()
|
||||
vol_id = self._get_volume_id()
|
||||
vol_id = _get_volume_id()
|
||||
response = self._do_delete('os-volumes/%s' % vol_id)
|
||||
self.assertEqual(202, response.status_code)
|
||||
self.assertEqual('', response.content)
|
||||
|
Reference in New Issue
Block a user